使用脚本中设置的管道命令的默认值运行 bash 脚本



我认为关于同一件事的两个问题......

问题一

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

./somescript.sh

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

问题二

是否也可以在脚本前面加上默认值?例如,如果要运行脚本./somescript.sh

它实际上会运行

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

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

您需要一个包装脚本来为您处理所有此类场景。

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

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

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

您可以使用

内置$#来了解您有多少参数并据此采取行动。 例如,如果你想做你的第二部分,你可以做一些类似的事情。

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

最新更新