Назначение вложенного сценария оболочки If - PullRequest
0 голосов
/ 03 августа 2020

Что не так со следующим кодом

         $var11="Inactive"
         if [[ $k = 'Activated' ]];then
               if [[ $v == 'Yes' ]];then
                      var11="Active"
               fi
         fi

Он находится внутри первого if, но не внутри второго. Когда я эхо, он также выводит значение $ v как «Да»

1 Ответ

0 голосов
/ 03 августа 2020

Поскольку этот фрагмент кода печатает yes:

k=Activated; v=Yes
if [[ $k = 'Activated' ]] ; then
    if [[ $v == 'Yes' ]] ; then
        echo yes
    fi
fi

, я предлагаю вам еще раз проверить свое значение $v. Вы можете сделать это, например, из следующей расшифровки:

pax> echo -n "$v" | od -xcb
0000000    6559    0073
          Y   e   s
        131 145 163
0000003

У вас должны быть эти три (и только эти три) символа. Все остальное не будет считаться равным (включая вещи, содержащие непечатаемые символы, которые могут быть неочевидны в простом echo переменной).

В стороне, вы не хотите это делать:

$var11="Inactive"

Общее правило состоит в том, что вы используете «голое» имя переменной для установки значения, а Используйте префикс $, если вы не используете более продвинутые возможности Bash, такие как ((...)):

pax> var11=42
pax> echo ${var11}
42
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...