Shell子命令输出到父命令

时间:2014-12-12 14:47:12

标签: bash shell command pipe

我有一个单行命令,让我们说

grep needle haystack.file

如果我想使用pwd命令将“needle”替换为当前工作目录,该怎么办?现在可能可以使用管道,但我需要针部分来显示工作目录,其余命令是相同的。

最好像这样:

grep (pwd) haystack.file

执行时会执行以下命令:

grep /var/www/html/ haystack.file

我已经做了一些搜索并找到了许多管道示例,但它不能应用于我的场景中,因为第一部分(grep)和第二部分(haystack.file)已在应用程序中修复。 / p>

2 个答案:

答案 0 :(得分:4)

使用$PWD变量,始终设置:

grep "$PWD" haystack.file

您也可以使用命令替换:

grep "$(pwd)" haystack.file

请注意引号的重要性。做吧!否则会发生奇怪的事情。

答案 1 :(得分:2)

您可以使用命令替换

<强>测试

$ echo $(pwd) > test
$ grep $(pwd) test
/home/xxx/yyy

$ grep `pwd` test
/home/xxx/yyy

安全

总是建议引用命令替换来处理pwd命令输出中的空格

<强>测试

$ pwd
/home/xxx/yyy/hello world
$(pwd) > test

$ grep $(pwd) test #without quoting
grep: world: No such file or directory
test:/home/xxx/yyy/hello world

$ grep "$(pwd)" test #with quoting
/home/xxx/yyy/hello world