Как сделать именованные аргументы командной строки в Bash Scripting лучшим способом? - PullRequest
0 голосов
/ 01 июня 2018

Это мой пример Bash Script example.sh :

 #!/bin/bash

 # Reading arguments and mapping to respective variables
 while [ $# -gt 0 ]; do
   if [[ $1 == *"--"* ]]; then
        v="${1/--/}"
        declare $v
   fi
  shift
 done

 # Printing command line arguments through the mapped variables
 echo ${arg1}
 echo ${arg2}

Теперь, если в терминале я запускаю bash-скрипт следующим образом:

$ bash ./example.sh "--arg1=value1" "--arg2=value2"

Я получаю правильный вывод, как:

value1
value2

Отлично!То есть я смог использовать значения, переданные аргументам --arg1 и --arg2, используя переменные $ {arg1} и $ {arg2} внутри скрипта bash.

Я счастлив с этимрешение на данный момент, поскольку оно служит моей цели, но кто-нибудь может предложить лучшее решение для использования именованных аргументов командной строки в скриптах bash?

1 Ответ

0 голосов
/ 01 июня 2018

Вы можете просто использовать переменные окружения:

#!/bin/bash

echo "$arg1"
echo "$arg2"

Анализ не требуется.Из командной строки:

$ arg1=foo arg2=bar ./example.sh
foo
bar

Существует даже опция оболочки, позволяющая вам размещать назначения где угодно, а не только перед командой:

$ set -k
$ ./example.sh arg1=hello arg2=world
hello
world
...