Относительно переменной Shell - PullRequest
0 голосов
/ 09 июня 2010

Мне нужно вызвать другой сценарий оболочки testarg.sh в моем основном сценарии.Этот скрипт testarg.sh имеет аргументы ARG1, ARG2, ARG3.Мне нужно вызвать следующий способ:

./testarg.sh -ARG1 <value>  -ARG2 <value> -ARG3

Аргументы ARG1 и ARG3 являются обязательными.Если он не передается в основной сценарий, я ухожу.ARG2 является необязательным.Если переменная ARG2 не установлена ​​со значением или не определена, мне не нужно передавать ее из основного скрипта.Поэтому мне нужно вызвать следующий способ

./testarg.sh -ARG1 <VALUE1> -ARG3

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

./testarg.sh -ARG1 <VALUE1> -ARG2 <VALUE2> -ARG3

Нужно лиоператор if для проверки переменной ARG2 пуст или пуст?Есть ли другой способ сделать это?


Поправка

Если установлен ARG2, то вызов должен быть:

./testarg.sh -ARG1 -OPT2 $ARG2 -ARG3

Ответы [ 2 ]

3 голосов
/ 09 июня 2010

Если это в bash, вы можете написать

./testarg.sh -ARG1 $ARG1 ${ARG2:+-ARG2 $ARG2} -$ARG3

Конструкция ${param:+word} оценивается как word, если установлено param, или ничего другого. Поэтому, если $ARG2 имеет значение, вы получите -ARG2 $ARG2, иначе ничего.

0 голосов
/ 09 июня 2010
#!/bin/sh

if [ "$1" = "" ]; then
    echo ARG1 is null
else
    echo ARG1 = $1
fi
if [ "$2" = "" ]; then
    echo ARG2 is null
else
    echo ARG2 = $2
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...