尝试编写一个简单的脚本来复制OS X 10.9中的一些文件。 这是内容..
SRC_DIR="~/Library/Preferences-Old"
DST_DIR="~/Library/Preferences"
FILEN="test.txt"
cp $SRC_DIR/$FILEN $DST_DIR
给我输出:
cp: ~/Library/Preferences-Old/test.txt: No such file or directory
当然,以上是错误的。终端中完全相同的cp命令直接起作用。我在这里做错了什么?
答案 0 :(得分:8)
~
是“当有疑问时引用”规则的少数例外之一。正如其他人所指出的那样,引用~
不受扩展。但是,您仍然可以引用字符串的 rest :
SRC_DIR=~"/Library/Preferences-Old"
DST_DIR=~"/Library/Preferences"
请注意,根据分配给两个*_DIR
变量的值,仅引用分配的值是不够的;你还需要引用他们的扩展。
FILEN="test.txt"
cp "$SRC_DIR/$FILEN" "$DST_DIR"
答案 1 :(得分:6)
您的双引号会阻止shell将您的~
转换为实际路径。观察:
$ echo ~
/home/politank_z
$ echo "~"
~
~
不是实际位置,它是主目录路径的简写。
答案 2 :(得分:2)
如前所述,双引号已禁用~
扩展。
更好的方法是使用HOME
变量:
SRC_DIR="$HOME/Library/Preferences-Old"
DST_DIR="$HOME/Library/Preferences"