第7行:[:Bash脚本中的参数太多

第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" ]

所以我试图用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" ]; then

应该有用

问题是,
输出
变量中有空格,因此它们会被展开,并在
[]
中被视为单独的参数,但是
-z
测试只需要一个值,因此它会抱怨参数的数量错误


注意,前几天,
iptables-t nat--list的输出可能永远不会是空的,因为它总是至少打印标题,所以如果
引用
$output
或者使用
[…]
而不是
[…]
的话,您可能永远也不会看到这个
的正文

if [ -z "$output" ]; then

应该有用

问题是,
输出
变量中有空格,因此它们会被展开,并在
[]
中被视为单独的参数,但是
-z
测试只需要一个值,因此它会抱怨参数的数量错误

注意,与前几天一样,
iptables-t nat--list的输出可能永远不会为空,因为它总是至少打印标题,因此您可能永远不会看到此
的正文,如果

您可能会发现有用。您可能会发现有用。