我有以下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中保留值的解决方法是什么?
答案 0 :(得分:4)
使用括号创建子shell。子shell中的变量赋值不会传播回父shell。尝试将()
替换为{}
。
{ true && { echo true1; echo true2; TEST=1; } || { echo false1; echo false2; TEST=0; }; } >> program.log