运行bash脚本,默认为脚本中设置的管道命令

时间:2016-06-01 21:46:22

标签: linux bash

关于我认为同样的事情的两个问题......

问题

是否可以使用默认参数/选项运行bash脚本? ......在某种意义上,如果有人要运行脚本:

./somescript.sh

它实际上会与./somescript.sh | tee /tmp/build.txt一起运行吗?

问题二

是否也可以在默认情况下添加脚本?例如,如果您要运行脚本./somescript.sh

它实际上会运行

script -q -c "./somescript.sh" /tmp/build.txt | aha > /tmp/build.html

非常感谢任何帮助或指导。

2 个答案:

答案 0 :(得分:0)

您需要一个包装器脚本来处理所有这样的场景。

例如,您的包装器脚本可以采用可帮助您做出决定的参数。

./wrapper_script.sh --input /tmp/build.txt --ouput /tmp/build.html

默认情况下,--input--output可以设置为空白时所需的值。

答案 1 :(得分:0)

您可以使用内置$#来了解您拥有的参数数量,并根据该参数采取行动。例如,如果你想做第二部分,你可以做类似

的事情
if [[ $# -eq 0 ]]; then
    script -q -c "$0 /tmp/build.txt | aha /tmp/build.html
    exit
fi

# do everything if you have at least one argument

虽然如果您的脚本/路径有空格会出现问题,那么您可能最好在script命令而不是$0

中为您的脚本添加真实路径

您也可以使用exec代替运行命令并退出,但请确保您的引号位于正确的位置:

if [[ $# -eq 0 ]]; then
    exec script -q -c "$0 /tmp/build.txt | aha /tmp/build.html"
fi

# do everything when you have at least 1 argument