希望有人能帮忙。 我正在尝试在 ksh 上执行以下操作。 有一个名为 var 的变量和一个名为 var1 的变量。
var=
var1=Y
[[ $var1 = "N" ]] || (command 1; var=N)
当执行上面的代码时,变量“var”没有被赋值。该命令正在执行,但就像“var”超出范围并且它正在创建一个新变量(在赋值获得正确的值 N 回显后,我尝试了回显)。
[[ $var1 = "N" ]] || (command 1; var=N; echo $var)
有人知道解决这个问题的方法吗?
我使用双管道的原因是为了避免 IF 语句,因为我有大量相同的条件。
谢谢
最佳答案
使用命令分组 { ... } 而不是 ( ... ),如
[[ $var1 = "N" ]] || { command 1; var=N; echo $var; }
这可以避免对分组命令列表进行子 shell 处理,从而保留分配给变量的值。这适用于 AT&T 和 MirBSD Korn Shell。
关于shell - AIX 条件多命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641157/