Как я могу написать сценарий оболочки для установки параметров по умолчанию - PullRequest
0 голосов
/ 22 марта 2019

В сценарии оболочки, как я могу установить 0 в качестве значения по умолчанию для параметра.

param2=0
${2:-0}

и

${2:-param2}

Эти результаты 0: not found

и

param=$5 
S{1:-$param} 

активен. но $ 0 означает имя сценария оболочки. Я хочу использовать номер 0.

Ответы [ 2 ]

0 голосов
/ 22 марта 2019
echo "param: $param"        # param is not defined
echo "param: ${param-0}"    # use 0 as default
param=99                    # set a value for param
echo "param: ${param-0}"    # ignore the default

выход:

param: 
param: 0
param: 99
0 голосов
/ 22 марта 2019

Чтобы понять подобные проблемы, добавьте set -x перед кодом.Это скажет вам, что ${2:-0} расширен до 0.Оболочка считает, что это команда, и пытается ее выполнить.

Это будет легче понять, если вы посмотрите на этот код:

cmd=echo
${cmd} test

Если вы запустите это, ${cmd} будетзаменено на echo.

В вашем коде вы, вероятно, захотите присвоить результат ${2:-0} новой переменной:

foo=${2:-0}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...