Shell AIX条件多命令执行

Shell AIX条件多命令执行,shell,scripting,ksh,aix,Shell,Scripting,Ksh,Aix,希望有人能帮忙。 我试图在ksh上执行以下操作。 有一个名为var的变量和一个名为var1的变量 var= var1=Y [[ $var1 = "N" ]] || (command 1; var=N) 执行上述操作时,变量“var”未赋值。正在执行该命令,但这就像“var”超出了范围,它正在创建一个新变量一样(我在赋值得到正确的值N后尝试了echo) 有人知道解决这个问题的方法吗 我使用双管道的原因是为了避免IF语句,因为我有大量相同的条件 谢谢使用带有{…}而不是(…)的命令分组,如 这样可

希望有人能帮忙。 我试图在ksh上执行以下操作。 有一个名为var的变量和一个名为var1的变量

var=
var1=Y
[[ $var1 = "N" ]] || (command 1; var=N)
执行上述操作时,变量“var”未赋值。正在执行该命令,但这就像“var”超出了范围,它正在创建一个新变量一样(我在赋值得到正确的值N后尝试了echo)

有人知道解决这个问题的方法吗

我使用双管道的原因是为了避免IF语句,因为我有大量相同的条件


谢谢

使用带有{…}而不是(…)的命令分组,如


这样可以避免对分组命令列表进行子外壳化,从而保留分配给变量的值。这适用于AT&T和MirBSD Korn Shell。

设置在
(…)
内部的变量是子shell
(…)
的本地变量。你看到的是预期的行为。如果必须使用子shell,那么最简单的方法是
echo“$var”>/tmp/varFile
,然后读取
/tmp/varFile
,以获取值(还有其他解决方案,但使用易于调试的方法;-))。祝你好运,谢谢你。我会把它当作答案,但我记不清P.ThanksI可以写一个更详细的答案,如果您需要如何将
/tmp/varfile
读入变量的帮助。很高兴这有帮助。祝你好运。命令“if-then-else-fi”也可以用于这些目的…我希望sergiopuy回来并勾选这个。。。这是一个更好的答案。这在bash中也很有效。谢谢大家,这很有效,尽管我已经更改了纸条。它会派上用场:)。谢谢
[[ $var1 = "N" ]] || (command 1; var=N; echo $var)
[[ $var1 = "N" ]] || { command 1; var=N; echo $var; }