首页 > 解决方案 > Shell 脚本嵌套 If 赋值

问题描述

以下代码有什么问题

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

它进入第一个 if 但不在第二个内部。当我回显时,它还将 $v 值打印为“是”

标签: shellunix

解决方案


由于这段代码打印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

推荐阅读