Попытка выполнить команды 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? Спасибо!

0
задан 24 May 2017 в 08:19
1 ответ

Я тестировал, и оба приведенных ниже работают в оболочке 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
3
ответ дан 4 December 2019 в 12:20

Теги

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