我有两个bash脚本。 Script1执行以下操作(为什么我使用两个脚本并不重要;只是假设它有充分的理由):
export RUN=1
和script2:
. script1
echo ${RUN}
sed -n ${RUN}p mytext.txt > mytextnew.txt
在脚本2中,echo返回" 1"正如我所料。但是,sed命令(或我尝试使用RUN变量的任何其他命令)会返回错误,就好像RUN不存在一样。如果我只使用以下命令运行script2:
RUN=2p
sed -n ${RUN} mytext.txt > mytextnew.txt
然后一切正常。此仅与全局变量一起发生。如果我对使用全局变量的局部变量执行完全相同的操作,一切正常。但是,当一个全局变量被抛入其中时,一切都变得混乱。
对问题的任何见解?
答案 0 :(得分:0)
以下内容:
$ cat script1
export RUN=1
$cat script2
. script1
echo ${RUN}
sed -n ${RUN}p /etc/passwd
之后
$ bash -x script2
打印
+ . script1
++ export RUN=1
++ RUN=1
+ echo 1
1
+ sed -n 1p /etc/passwd
如果将空格添加到
sed -n ${RUN} p /etc/passwd
打印
sed: -e expression #1, char 1: missing command
使用
检查$ RUN的内容echo "${RUN}" | od -bc #note the double quotes
#or
echo "${RUN}" | xxd
看看,真正包含$RUN
变量...