Проблема с передачей параметра в простой ShellScript (команда не найдена) - PullRequest
2 голосов
/ 27 октября 2011

Я пытаюсь написать простой shell-скрипт, который выводит первый параметр, если он есть, и выводит «none», если его нет. Скрипт называется test.sh

    if [$1 = ""]
    then
        echo "none"
    else
        echo $1
    fi

Если я запускаю скрипт без параметра, все работает. Однако, если я запускаю эту команду source test.sh -test, я получаю эту ошибку -bash: [test: command not found до того, как скрипт продолжит работу, и правильно выполнит тестирование. Что я делаю не так?

1 Ответ

8 голосов
/ 27 октября 2011

вам нужны пробелы до / после символов '[', ']', то есть

if [ "$1" = "" ] ; then
#---^---------^ here
   echo "none"
else
    echo "$1"
fi

И вам нужно обернуть вашу ссылку (на самом деле все ссылки) в $ 1 с кавычками, как отредактировано выше.

После того, как вы это исправите, вам также может понадобиться указать относительный путь к вашему скрипту, например:

source ./test.sh -test
#------^^--- there

Когда вы получаете сообщение об ошибке оболочки, которое у вас есть, оно почти всегда помогает повернутьпри отладке оболочки с set -vx перед строками, которые вызывают ваши проблемы, ИЛИ в самом верху вашего скрипта.Затем вы можете увидеть каждую строку / блок кода, который выполняется, И значение переменных, которые использует оболочка.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...