2015-08-23 58 views
0

所以我試圖做一個if-else來檢查是否有使用iptables -t nat -list列出的任何東西,但是我遇到了一個錯誤,說明第7行太多的參數。第7行:[:Bash腳本中的參數太多

output=$(iptables -t nat --list) 
if [ -z $output ] 
then 
output=$(iptables -t nat - A PREROUTING -p tcp --destination-port 80 -j...) 
fi 
+0

您可以在主體找到[shellcheck](http://www.shellchec k.net)有用。 –

回答

4

無論報價$output或使用[[...]]代替[...]

if [ -z "$output" ]; then 

if [[ -z $output ]]; then 

應該工作

的問題是,你output變量中有空格,所以他們得到擴大,作爲獨立參數內[ ]處理,但-z測試只要求單一值,所以它抱怨有錯誤的參數數目

注意,按照your related question其他一天,iptables -t nat --list輸出可能永遠不會是空的,因爲它總是打印至少頭,所以你可能永遠達不到這個if