簡體   English   中英

運行bash腳本,默認情況下為腳本中設置的管道命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM