我正在尝试创建一个交互式 bash shell 脚本,以便更轻松地安装和配置 postfix 邮件服务器,但仍然让他们输入命令,然后让 shell 运行它们,但我一直收到此错误,我不知道为什么。
这两行给了我错误“参数太多”
if test $VAR1 = sudo apt-get install postfix
和
until test $VAR1 = sudo apt-get install postfix
谢谢。
答案1
您需要引用参数以test
防止它们在空格处“中断”,即如果
$ var1="sudo apt-get install postfix"
然后
$ if test $var1 = sudo apt-get install postfix; then echo "Match"; fi
bash: test: too many arguments
但
$ if test "$var1" = "sudo apt-get install postfix"; then echo "Match"; fi
Match
[ ... ]
如果你使用测试构造,同样适用
if [ "$var1" = "sudo apt-get install postfix" ]; then echo "Match"; fi
顺便说一句,建议不要使用全大写的变量名 - 全大写通常保留用于系统变量。