2017-09-08 65 views
0

bash腳本應傳遞到另一個腳本,這是在我的情況Python腳本它的參數:bash腳本:避免空字符串參數

python test.py "$1" "$2" "$3" 

的Python腳本使用argparse庫,並會與返回錯誤,如果存在空字符串參數,即父腳本被調用少於3個參數。 我在示例中使用python腳本的原因是,如果未使用「空字符串」 - 賦值參數,它可能無法在子shell腳本中識別。規避錯誤

的一種方法,是檢查參數的個數$#並明確處理每個可行情況下:

if [ $# -eq 0 ] 
then 
    python test.py 
elif [ $# -eq 1 ] 
then 
    python test.py "$1" 
elif [ $# -eq 2 ] 
then 
    python test.py "$1" "$2" 
else 
    python test.py "$1" "$2" "$3" 
fi 

注意,我引用的論據,因爲它們可能會包含空格。

這個(臃腫的)解決方案存在哪些替代方案?

解決方案不應該依賴於傳遞參數列表作爲一個整體。可能需要更改參數的順序或將其他局部變量作爲參數添加到python腳本中。

回答

1

"[email protected]"擴展到什麼,如果沒有參數,所以你可以簡單地使用

python test.py "[email protected]" 

如果你想確保一個第四個參數到腳本(或更多)未傳遞到Python腳本,請使用bash分機號碼

python test.py "${@:1:3}"