Предоставление индикатора прогресса для выполнения команд противоречит этосу Linux? [дубликат]

Для ответа на общий вопрос в заголовке введите head -1 или sed -n 1p - или sed 1q - это способы выбрать первую строку чего-либо.

Но ваш случай - выбрать первый результат замены на sed . Вы можете получить это из самого sed с небольшой модификацией, а также он может выполнять эквивалент вашего grep и вашего бесполезного cat , плюс вам нужен только один из ваших групп захвата:

sed 

ДОБАВЛЕНО: вы также можете избежать обратной косой черты в регулярном выражении, если вы используете -r , , как ответил Каффе (пока я писал), в MOST версиях из sed .

В вашем случае ssh есть ДВЕ (или три) проблемы. Вы делаете:

ssh user@machine "port=$( commands ) | echo port"

Во-первых, $ (commands) заключены в строку с двойными кавычками, поэтому они выполняются на ВАШЕМ компьютере, а не на другом. Вы подключаетесь к $ maquina , но пытаетесь (см. Далее) указать ему напечатать номер порта ВАШЕЙ машины, что является пустой тратой времени. (И исправить это непросто, потому что вы хотите заменить $ sid плюс использовать одинарные кавычки для команды sed .)

Во-вторых, вы выполняете port = value | echo $ port .Этот конвейер запускает отдельные подоболочки (на другой машине); в первой подоболочке он устанавливает переменную порт равным номеру порта (с вашего компьютера), но эта переменная никогда ни для чего не используется; во второй подоболочке он печатает значение переменной port, которая не установлена ​​в этой подоболочке, поэтому вы получаете пустую строку. Чтобы поместить значение в переменную и затем использовать переменную, используйте ; или, если хотите или можете зависеть от его статуса выхода && или || .

Но вам не нужна никакая переменная. За исключением искажения пробелов и раскрытия глобусов, если они есть, которых здесь нет, var = $ (commands); echo $ var точно то же самое, что команды . Аналогично ! Echo $ maquina! где! на самом деле являются обратными кавычками (я не могу найти способ разметки в тексте) без пробелов или глобусов (которые не встречаются в имени машины) точно то же самое, что $ maquina .

TL; DR:

ssh ora$sid@$maquina "sed 

0
13.04.2017, 15:36
0 ответов

Теги

Похожие вопросы