Переменные сценариев оболочки Bash - PullRequest
1 голос
/ 03 декабря 2010

В моем скрипте оболочки есть следующая строка:

if [-n "$ {USE_X: +1}"]; то

Я не могу понять, что означает часть ": +1". Есть идеи?

Ответы [ 3 ]

5 голосов
/ 03 декабря 2010

Посмотрите здесь . Этот URL дает следующее объяснение:

$ {параметр: + alt_value}

Если задан параметр, используйте alt_value, иначе используйте пустую строку.

и имеет следующий пример:

echo
echo "###### \${parameter:+alt_value} ########"
echo

a=${param4:+xyz}
echo "a = $a"      # a =

param5=
a=${param5:+xyz}
echo "a = $a"      # a =
# Different result from   a=${param5+xyz}

param6=123
a=${param6:+xyz}
echo "a = $a"      # a = xyz
4 голосов
/ 03 декабря 2010

в основном, если установлено значение $ USE_X, оператор оценивается как 1, в противном случае - ноль.Вероятно, похоже на

if [ -z $USE_X ];
then
    echo 1
else
    echo ""
fi

из http://tldp.org/LDP/abs/html/parameter-substitution.html#PATTMATCHING:

${parameter+alt_value}, ${parameter:+alt_value}
If parameter set, use alt_value, else use null string.

Both forms nearly equivalent. The : makes a difference only when parameter has been declared and is null, see below.
2 голосов
/ 03 декабря 2010

, так как aioobe уже ответил на сам вопрос, вот способ найти длинную man-страницу, как Bash, используя регулярное выражение, используя этот вопрос в качестве примера:


/\{.*:\+

Первая косая черта ставит less(просмотрщик manpage) в режим поиска;регулярное выражение говорит, что нужно искать левую скобку, затем любое количество материала, затем двоеточие и знак плюс.Скобку и плюс нужно экранировать, поскольку они имеют особое значение для синтаксического анализатора регулярных выражений.

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