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

Мой bash-скрипт bash.sh содержит только одну строку

echo "${abc:=123}"

Я узнал, что := используется для назначения значений по умолчанию. Поэтому, когда я запускаю bash.sh abc=abc, я ожидаю, что на выходе будет abc.

Однако на выходе все равно будет 123.

Почему это так? Я неправильно назвал сценарий? Спасибо.

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Вы передаете параметр и ожидаете увидеть его в переменной окружения.

Если вы хотите установить переменную окружения, вы можете сделать это до имени сценария:

$ cat foo
#!/bin/bash
echo "${abc:=123}"

$ ./foo
123

$ abc=hello ./foo
hello
1 голос
/ 02 октября 2019

Позиционные аргументы Bash установлены на $1, $2 и т. Д. Измените свой сценарий на:

abc=$1
echo "${abc:=123}"

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

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