尝试从文件中执行 grep 和 sed 并将输出推送到变量中

尝试从文件中执行 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 调用它们吗?谢谢!

答案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

相关内容