почему bash говорит мне, что команда if не найдена, когда я запускаю следующий код? - PullRequest
2 голосов
/ 10 ноября 2010

извините, я относительно новичок в bash, но

if [ ! -d /home/$USER/testfoo ]; then mkdir /home/$USER/testfoo; fi

имеет желаемый эффект создания каталога testfoo, если он не существует

но

TESTCMD="if [ ! -d /home/$USER/testfoo ]; then mkdir /home/$USER/testfoo; fi"
$TESTCMD

возвращает

if: command not found

Что я делаю не так?

1 Ответ

3 голосов
/ 10 ноября 2010

Если вы используете переменную в качестве команды, подобной этой, она интерпретирует содержимое переменной как имя команды, а не как команду, сопровождаемую ее аргументами.

Так что если вы делаете VAR="foo bar" а затем $VAR он ищет исполняемый (или встроенный) файл с именем foo bar, а не исполняемый файл с именем foo, который вызывается с аргументом bar.

.хотите, вам нужно определить функцию:

TESTCMD() {
  if [ ! -d /home/$USER/testfoo ]
  then
    mkdir /home/$USER/testfoo
  fi
}
TESTCMD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...