shell脚本将文件从一个目录复制到另一个目录

api*_*ang 4 shell terminal scripting

尝试编写一个简单的脚本来复制OS X 10.9中的一些文件.这是内容..

SRC_DIR="~/Library/Preferences-Old"

DST_DIR="~/Library/Preferences"

FILEN="test.txt"

cp $SRC_DIR/$FILEN $DST_DIR
Run Code Online (Sandbox Code Playgroud)

给我输出:

cp: ~/Library/Preferences-Old/test.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)

当然,以上是错误的.终端中完全相同的cp命令直接起作用.我在这做错了什么?

che*_*ner 8

~是"当有疑问时引用"规则的少数例外之一.正如其他人所指出的那样,引用~不受扩张的影响.但是,您仍然可以引用字符串的其余部分:

SRC_DIR=~"/Library/Preferences-Old"
DST_DIR=~"/Library/Preferences"
Run Code Online (Sandbox Code Playgroud)

请注意,根据分配给这两个*_DIR变量的值,引用所分配的值是不够的; 你还需要引用他们的扩展.

FILEN="test.txt"

cp "$SRC_DIR/$FILEN" "$DST_DIR"
Run Code Online (Sandbox Code Playgroud)


Pol*_*k-Z 6

您的双引号会阻止shell将您~转换为实际路径.注意:

$ echo ~
/home/politank_z

$ echo "~"
~
Run Code Online (Sandbox Code Playgroud)

~ 它不是一个实际的位置,它是您的主目录路径的简写.