我认为关于同一件事的两个问题......
问题一:
是否可以使用默认参数/选项运行 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