shell - AIX 条件多命令执行

标签 shell scripting ksh aix

希望有人能帮忙。 我正在尝试在 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/

相关文章:

unix - 如何在ksh中反转字符串

ksh - 如果超出 ksh 中的字符串限制,则附加空格或截断字符串

Mysql,outfile 问题,简单的解决方案还是更好的方法?

linux - shell脚本比较两个文件并将差异写入第三个文件

linux - 使用 shell 脚本统计文件和目录

Python交互式shell : how do I know what method gets used when I simply type the name of an object?

programming-languages - 什么时候一种语言被视为脚本语言?

testing - 在 Windows Powershell 中选择用于 Web UI 测试自动化的下拉列表选项

linux - shell 脚本 : to print selected text in the string

php ffmpeg exec & shell_exec 进程在几秒后停止