Можем ли мы выполнить команды grep и sed из файла и передать результат в переменную
grep "^/dev/disk/by-id/scsi-*" /tmp/disks.txt | sed '{'s/=.*//'}'
Результат будет таким:
/dev/disk/by-id/scsi-3644a8420420897001f2af8cc054d33bb
/dev/disk/by-id/scsi-3644a8420420897001ef50fcb0f778b86-part3
/dev/disk/by-id/scsi-3644a8420420897001ef50fcb0f778b86-part2
Ошибка:
[/~]# grep "^/dev/disk/by-id/scsi-*" /tmp/disks.txt | sed {'s/=.*//'} >> $x
-bash: $x: ambiguous redirect
Можем ли мы поместить все 3 строки в переменную и вызвать их с помощью foreach? Спасибо!
Я протестировал, и оба приведенных ниже работают в оболочке bash:
x=`grep "^/dev/disk/by-id/scsi-*" /tmp/disks.txt | sed {'s/=.*//'}`
x=$(grep "^/dev/disk/by-id/scsi-*" /tmp/disks.txt | sed {'s/=.*//'})
Обратите внимание, что первая строка - это обратные кавычки, а не одинарные кавычки.
Символ >> в вашем вопросе отправляет вывод в файлы, а не в переменные.
Чтобы ответить на вторую часть, да, используя вывод сверху, работает цикл for:
for line in $x
do
echo $line
done