第7行:[:Bash脚本中的参数太多
所以我试图用if-else来检查是否有使用iptables-t-nat-list列出的内容,但是我在第7行中遇到了一个错误,说了太多的参数第7行:[:Bash脚本中的参数太多,bash,scripting,Bash,Scripting,所以我试图用if-else来检查是否有使用iptables-t-nat-list列出的内容,但是我在第7行中遇到了一个错误,说了太多的参数 output=$(iptables -t nat --list) if [ -z $output ] then output=$(iptables -t nat - A PREROUTING -p tcp --destination-port 80 -j...) fi 引用$output或使用[…]而不是[…] if [ -z "$output" ]
output=$(iptables -t nat --list)
if [ -z $output ]
then
output=$(iptables -t nat - A PREROUTING -p tcp --destination-port 80 -j...)
fi
引用
$output
或使用[…]
而不是[…]
if [ -z "$output" ]; then
或
应该有用
问题是,输出
变量中有空格,因此它们会被展开,并在[]
中被视为单独的参数,但是-z
测试只需要一个值,因此它会抱怨参数的数量错误
注意,前几天,
iptables-t nat--list的输出可能永远不会是空的,因为它总是至少打印标题,所以如果引用$output
或者使用[…]
而不是[…]
的话,您可能永远也不会看到这个的正文
if [ -z "$output" ]; then
或
应该有用
问题是,输出
变量中有空格,因此它们会被展开,并在[]
中被视为单独的参数,但是-z
测试只需要一个值,因此它会抱怨参数的数量错误
注意,与前几天一样,iptables-t nat--list的输出可能永远不会为空,因为它总是至少打印标题,因此您可能永远不会看到此的正文,如果
您可能会发现有用。您可能会发现有用。