我可以在UNIX shell中的另一个命令中执行命令吗?
如果不可能,我可以使用上一个命令的输出作为下一个命令的输入,如:
command x
然后command y
,
我想在command y
中使用command x
的输出?
答案 0 :(得分:12)
您可以使用反引号。
例如,这将捕获file.txt
cat`echo file.txt`
这将打印日期
回显日期是'date`
后引号之间的代码将被执行并被其结果替换。
答案 1 :(得分:6)
你可以这样做;
x=$(grep $(dirname "$path") file)
此处dirname "$path"
将首先运行,其结果将被替换,然后grep将运行,在dirname
file
的结果
答案 2 :(得分:3)
你到底想要做什么?从您执行的命令中不清楚。也许如果你描述你正在寻找什么,我们可以指出你正确的方向。如果要对“find”命令返回的一系列文件(或目录)名称执行命令,则Colin是正确的,您需要查看“find”的“-exec”选项。如果您希望对文件中列出的或来自stdin的一堆参数执行命令,则需要查看“xargs”命令。如果要将单个命令的输出放到另一个命令的命令行上,那么使用“$(command)”(或'command'[用反引号替换')将完成这项工作。有很多方法可以做到这一点,但不知道它是什么,你正在尝试它很难更有帮助。
答案 3 :(得分:-1)
这是我使用嵌套系统命令的示例。 我在 find 命令之上运行了“ls -ltr”。它执行 它在 find 输出上串行。
ls -ltr $(find .-name "srvm.jar")