[英]Run bash script with defaults to piped commands set within the script
我認為關於同一件事的兩個問題...
問題一 :
是否可以使用默認參數/選項運行bash腳本? ...從某種意義上說,如果有人要運行腳本:
./somescript.sh
它實際上將與./somescript.sh | tee /tmp/build.txt
./somescript.sh | tee /tmp/build.txt
?
問題二 :
還可以在腳本前加上默認值嗎? 例如,如果您要運行腳本./somescript.sh
它實際上會運行
script -q -c "./somescript.sh" /tmp/build.txt | aha > /tmp/build.html
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.