>我有以下 program.sh:
#!/bin/bash
(true && { echo true1; echo true2; TEST=1; } || { echo false1; echo false2; TEST=0; }) >> program.log
echo test: $TEST
为什么 program.sh 的输出是:
test:
在 TEST 中保留值的解决方法是什么?
使用括号会创建一个子外壳。子外壳中的变量赋值不会传播回父外壳。尝试将()
替换为 {}
。
{ true && { echo true1; echo true2; TEST=1; } || { echo false1; echo false2; TEST=0; }; } >> program.log