我有一个生成bash脚本的CLI。如何在不重定向到.sh文件的情况下立即对其进行评估?
示例是更改以下内容:
~: toolWhichGeneratesScript > tmp.sh
~: chmod +x tmp.sh
~: ./tmp.sh
类似于:
~: toolWhichGeneratesScript | evaluate
答案 0 :(得分:2)
您可以传递命令以使用bash -c
(或sh -c
):
bash -c "$(toolWhichGeneratesScript)"
-c If the -c option is present, then commands are read from the first non-option argument command_string. If there are arguments after the command_string, they are assigned to the positional parameters, starting with $0.
与shell的管道不同,这使得stdin可以自由地与脚本运行的提示和程序进行交互。
答案 1 :(得分:1)
shell从标准输入中读取其脚本:
toolWhichGeneratesScript | sh
(事实上,交互式shell也是如此;它的标准输入恰好是终端。)
请注意,您需要知道要使用哪个 shell;如果您的工具输出bash
个扩展名,那么您必须将其传递给bash
。此外,如果生成的脚本本身需要从标准输入读取,则会出现一些问题。
答案 2 :(得分:0)
尝试这样做:toolWhichGeneratesScript | bash的