【发布时间】:2014-08-29 17:45:09
【问题描述】:
希望有人可以提供帮助。 我正在尝试在 ksh 上执行以下操作。 有一个名为 var 的变量和一个名为 var1 的变量。
var=
var1=Y
[[ $var1 = "N" ]] || (command 1; var=N)
执行上述操作时,变量“var”没有赋值。该命令正在执行,但就像“var”超出范围并且它正在创建一个新变量(我在分配得到正确值 N 回显后尝试回显)。
[[ $var1 = "N" ]] || (command 1; var=N; echo $var)
有人知道解决这个问题的方法吗?
我使用双管道的原因是为了避免使用 IF 语句,因为我有大量相同的条件。
谢谢
【问题讨论】:
-
在
( .... )中设置的变量是子shell(...)的本地变量。您所看到的是预期的行为。如果您必须使用子shell,那么最简单的方法是echo "$var" > /tmp/varFile,然后阅读/tmp/varfile以获取值(还有其他解决方案,但得到了易于调试的解决方案;-))。祝你好运。 -
谢谢。我会把它作为答案,但不能标记它。 :P。谢谢
-
如果您需要有关如何将
/tmp/varfile读入变量的帮助,我可以写出更详细的答案。很高兴这有帮助。祝你好运。 -
命令 'if-then-else-fi' 也可用于此类目的...