我们可以从文件中执行 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 调用它们吗?谢谢!
答案1
我已经测试过,以下两个方法都可以在 bash shell 中运行:
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