shell - Shell 脚本嵌套 If 赋值
问题描述
以下代码有什么问题
$var11="Inactive"
if [[ $k = 'Activated' ]];then
if [[ $v == 'Yes' ]];then
var11="Active"
fi
fi
它进入第一个 if 但不在第二个内部。当我回显时,它还将 $v 值打印为“是”
解决方案
由于这段代码打印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