Назад | Перейти на главную страницу

Попытка выполнить grep и sed из файла и передать результат в переменную

Можем ли мы выполнить команды 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