我有一个输出不同命令行的命令行,例如:
> commandlineA param1 param2
commandlineB param1
我想要一个单一的命令行执行,它将使用给定的参数运行命令行B。
是否有任何简单的方法可以使用单个命令行来做到这一点,或者我是否需要运行一个小型 bash 文件,将输出存储在变量中然后运行它?
谢谢
答案1
您似乎已经自己解决了这个问题,但您可以使用:
$(command parameter1 parameter2)
編輯 ...:下面的代码有些错误,虽然它确实在子 shell 中运行命令,但事实证明环境变量仍然可用。抱歉误导了大家...
编辑:将在子 shell 中运行,任何未导出的环境变量都不会被使用。如果您想在同一个 shell 中运行命令,您需要使用:
eval $(command parameter1 parameter2)
给出的另一个答案是通过 bash 本身进行管道传输:
echo 'uname -a' | bash
这也将在子 shell 中执行,要在同一个 shell 中运行,您将需要:
echo 'uname -a' | bash -c
顺便说一句,你也可以使用反引号代替 $() 语法,但它不建议。
答案2
用这个:
commandlineA param1 param2 | bash
例子:
echo "uname -a" | bash
输出:
Linux k1104 2.6.38-8-generic #42-Ubuntu SMP 2011 年 4 月 11 日星期一 03:31:50 UTC i686 i686 i386 GNU/Linux