Ошибка bash на eval, содержащем пустое пространство

Мне нужно запустить параметр передачи bash с помощью формата [variable_name = "value"] следующим образом:

./test.sh ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano' 

В скрипте test.sh я хочу присвоить любой переменной соответствующее значение:

 #!/bin/bash eval `echo "$@"` echo $ftpcmd 

Но я получаю prova: command not found ошибка.

Я почти новичок в сценариях оболочки bash, и я не могу понять, что не так в моем параметре ftpcmd='CWD debug' ни как я должен его написать.

Если я попытаюсь заменить eval объявлением, тогда $ftpcmd будет установлен только для CWD вместо CWD debug как я ожидаю.

One Solution collect form web for “Ошибка bash на eval, содержащем пустое пространство”

Если вы поставили задания перед скриптом

 ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano' ./test.sh 

переменные доступны в среде сценария. Параметр -k рассматривает все назначения, а не только назначения перед командами, как изменения среды.

 set -k ./test.sh ip='164.130.21.98' hostname='whatever' pwd='/test' ftpcmd='CWD debug' user='stefano' set +k 

В любом случае eval вообще не требуется и может быть удален.

  • Приоритет параметров команды?
  • Поиск различного имени файла в цикле
  • Номер истории Bash не начинается с 1?
  • Команда «повторно применить» предыдущую команду?
  • Как вы можете регистрировать каждую введенную команду
  • В чем разница, имеющая двойные кавычки или нет в bash
  • Как передать строковый параметр в функции bash?
  • Как получить имя команды последней выполненной команды?
  • В bash, grep для строки, начинающейся с \, и присваивания результата с помощью обратных шагов
  • Как я могу перемещаться между словами в командной строке в tcsh в linux?
  • Проверьте, запущен ли скрипт cron, а не вызван вручную
  • Linux и Unix - лучшая ОС в мире.