cd后的shell脚本变量范围

时间:2014-11-27 16:21:09

标签: bash shell variables sh

为什么在下面的脚本上调用 cd 命令后,第二个回声线不起作用?

#!/bin/bash
LOGFILE='my.log'
echo 'log line 1' >> $LOGFILE
cd folder-x
echo 'log line 2' >> $LOGFILE

没有cd命令它可以工作吗?

#!/bin/bash
LOGFILE='my.log'
echo 'log line 1' >> $LOGFILE
#cd folder-x
echo 'log line 2' >> $LOGFILE

2 个答案:

答案 0 :(得分:1)

LOGFILE不是文件变量,它只是一个文件名称。即便如此,它只是文字。

所以会发生什么:

echo 'log line 1' >> $LOGFILE

写入当前目录中的my.log,因为这会转换为:

echo 'log line 1' >> my.log

然后我们

cd folder-x

echo 'log line 2' >> $LOGFILE

扩展为:

echo 'log line 2' >> my.log

正是这样 - 在 new 当前目录中。

可以LOGFILE中包含当前目录,因此将来的日志语句附加在那里,如下所示:

#!/bin/bash
LOGFILE="`pwd`/my.log"
echo 'log line 1' >> $LOGFILE
cd folder-x
echo 'log line 2' >> $LOGFILE

答案 1 :(得分:0)

它将创建两个日志文件。一个你运行脚本的地方。另一个在文件夹-x。