很久很久以前,我写了一个脚本来加密备份些下载好的东西,并使用了crontab定期运行。其代码类似如下
#!/bin/bash
PWD="xxxxxxxxx"
FOLDER="/data/xxxxxxx/"
FILE=/tmp/xxxxxxxx_`date +%Y%m%d`.zip
cd ${FOLDER}
zip -r ${FILE} ./ -P ${PWD} -m
从脚本上看倒是没啥问题,但在我这次想要从里面提取文件时,却发现使用脚本中的密码出错。百思不得其解的我尝试在终端中输入了
root@home:~# PWD="xxxxxxxxx"
root@home:xxxxxxxxx# echo ${PWD}
xxxxxxxxx
root@home:xxxxxxxxx# cd /
root@home:/# echo ${PWD}
/
结果神奇的事情出现了,对 ${PWD}
赋值的行为改变了当前显示的文件夹名称,并且在cd之后, ${PWD}
的值自动被重写为当前的目录值了,而不是我最初指定的那个值了。一番搜索后才知道,原来 ${PWD}
是一个环境变量,和 pwd 命令几乎类似,指向了当前的工作目录。而我在脚本中,先对PWD变量进行赋值,随后使用cd切换了工作目录,导致 $PWD
的值在切换后实际和 ${FOLDER}
值相同。
我看到pwd第一反应是指定工作目录,有时脚本如果要读写特定位置的文件,而路径没有写全,就会出现找不到文件的问题,同样导致脚本运行出错
人才~