Я пытаюсь создать интерактивный сценарий оболочки bash, чтобы упростить установку и настройку почтового сервера postfix, но они по-прежнему вводят команды, а затем оболочка запускает их, но я получаю эту ошибку не знаю почему.
Эти две строки дают мне ошибку «Слишком много аргументов»
if test $VAR1 = sudo apt-get install postfix
и
until test $VAR1 = sudo apt-get install postfix
Спасибо.
Вам нужно процитировать аргументы 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
В качестве отступления, рекомендуется не использовать заглавные буквы для имен ваших переменных - заглавные буквы обычно резервируются для системных переменных. .