我的一个bash脚本出了问题。 我有一个变量和一个函数定义,非常简单:
RESULT='{"single":[],"theme":[],"imagesheet":[]}'
addResult() {
type=$1
filename=$2
OP=".${type} += [\"${filename}\"]"
RESULT=$(echo $RESULT | jq "$OP")
}
我调用此addResult
函数并检查$RESULT
变量,我可以看到它已更改,并且json增长。
但是,我也从循环中调用此函数:
grep -Rh "\.Image(\"" $MY_DIR | while read LINE; do
addResult single "${LINE}"
done
当我从循环内部检查变量时,我可以看到条目被添加到json中。但是,在循环结束后,$RESULT
变量会立即丢失在循环内添加的所有条目。我该怎么做才能在循环中进行更改?
编辑: 感谢@marcolz我已将我的电话修改为:
RESULT=$(grep -Rh "\.Image(\"" $MY_DIR | while read LINE; do check_imagesheets $LINE; done; echo $RESULT)
不幸的是,check_imagesheets
函数非常大,并且还包含一些echo
个调用,这些调用会污染最终的echo $RESULT
。我可以采取哪些其他方法来缓解这个问题?