var=
var1=Y
[[ $var1 = "N" ]] || (command 1; var=N)
执行上述操作时,变量“var”未赋值。该命令正在执行,但就像“var”超出范围并且它正在创建一个新变量(我在分配后尝试了一个回声,得到正确的值N回显)。
[[ $var1 = "N" ]] || (command 1; var=N; echo $var)
有人知道解决这个问题的方法吗?
我使用双管道的原因是为了避免使用IF语句,因为我有很多相同的条件。
由于
答案 0 :(得分:2)
使用{...}而不是(...)进行命令分组,如
[[ $var1 = "N" ]] || { command 1; var=N; echo $var; }
这避免了对分组命令列表进行变换,从而保留赋给变量的值。这适用于AT& T和MirBSD Korn Shells。