<分区>
好吧,我在处理 Bash 时遇到了麻烦,而且它缺少全局变量。我遇到的问题是,在 while 循环内,我必须执行一个 for 循环,在那个 for 循环内,我将调用一个脚本,我需要动态更改变量 $NAME。不幸的是,在我尝试了几种不同的选择之前,我不知道它是什么。变量在原始过程中设置后永远不想更改。我今天对此做了很多研究,我发现这是因为读取此类文件中的文件会打开一个子 shell,并且它无法在其父进程中编辑值。我尝试制作多个文件以动态导出变量,但这也不起作用。
编辑:这个例子很简单,但它与我在工作中使用的逻辑相同。无法显示工作代码。
#!/usr/bin/env bash
FILE=$1
SCRIPT="FOO"
NAME="TEST"
#create script
cat > "${SCRIPT}" <<EOF
HELLO WORLD, $NAME
EOF
while read line; do
echo $line
echo $SCRIPT
for i in `seq 1 10`; do
(
NAME="MEGAMAN"
echo $NAME
)
done
done < "$FILE"
#echo $NAME
cat > "${SCRIPT}" <<EOF
HELLO WORLD, $NAME
EOF
我的输出:
jose@jose-desktop:~/workspace/Script $ ./Main FOO
HELLO WORLD, TEST
FOO
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN
MEGAMAN **this output is fine
它输出的文件:
HELLO WORLD, TEST **This file should say MEGAMAN.