2015-10-03 5 views
-2

Почему эхо отображается команда, а не вывод команды, как только я начну использовать ее в цикле FOR I? Например, эта команда работаетПочему эхо отображается сама команда, а не вывод команды

[email protected] tmp]# iscsiadm -m node |awk '{print $1}' 
192.168.100.88:326 

Но не в FOR I цикла

[[email protected] tmp]# for i in 'iscsiadm -m node | awk '{print $1}'';do echo $i;done 
iscsiadm -m node | awk {print 
} 

Я хочу, чтобы команда для печати первого поля так, то я могу добавить другие функции к петле для I. Спасибо

EDIT - Не знаю, почему я проголосовал за этот вопрос. Пожалуйста, порекомендуйте.

+0

Я предполагаю, что вы получили downvoted, потому что ваша линия имеет очевидные ошибки, которые могут быть легко решаемые путем изучения зачаточное из сценариев командной оболочки, может быть, спрашивая себя « как я могу зациклиться на выходе процесса »и найти ответ среди всех доступных источников. Если вас не устраивает то, что вы находите, или вы не можете заставить его работать, то (и только тогда) задайте вопрос. –

+0

И среди ответов, которые вы, вероятно, увидите: 'while read -r i _; do echo "$ i"; done <<(iscsiadm -m node) ', что является правильным ответом. –

+0

Благодарим за отзыв. Я могу оценить вашу точку зрения. Я профессионал в области информационных технологий уже 15 лет и умею самостоятельно учиться. Поэтому я участвую в программировании. Однако мой мозг подключен таким образом (пока), поэтому я не нахожу эти ответы очевидными. Как только вы знаете ответ, это очевидно, но вначале это сложно. Вид сна, чтобы люди засунули его в лицо, если вы спросите меня. Но в любом случае я благодарен людям, которые действительно опубликовали полезные ответы. – Joe

ответ

2

Вы не выполняете команды iscsiadm и awk, потому что вы процитировали их; что делает его буквенной строкой. Для того, чтобы заменить вывод команды обратно в командную строку, используйте $(...)

for i in $(iscsiadm -m node |awk '{print $1}'); do 
    echo $i 
done