shell 将文件从一个目录复制到另一个目录的脚本
shell script to copy files from one directory to another
正在尝试编写一个简单的脚本来复制 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 命令可以直接解决问题。我在这里做错了什么?
您的双引号阻止 shell 将您的 ~
转换为实际路径。观察:
$ echo ~
/home/politank_z
$ echo "~"
~
~
不是实际位置,它是 shorthand 主目录的路径。
如前所述,双引号已禁用 ~
扩展。
更好的方法是使用 HOME
变量:
SRC_DIR="$HOME/Library/Preferences-Old"
DST_DIR="$HOME/Library/Preferences"
~
是规则 "When in doubt, quote" 的少数例外之一。正如其他人指出的那样,引用的 ~
不受扩展限制。但是,您仍然可以引用字符串的 rest:
SRC_DIR=~"/Library/Preferences-Old"
DST_DIR=~"/Library/Preferences"
请注意,根据分配给两个 *_DIR
变量的值,仅引用所分配的值是不够的;你仍然需要引用他们的扩展。
FILEN="test.txt"
cp "$SRC_DIR/$FILEN" "$DST_DIR"
正在尝试编写一个简单的脚本来复制 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 命令可以直接解决问题。我在这里做错了什么?
您的双引号阻止 shell 将您的 ~
转换为实际路径。观察:
$ echo ~
/home/politank_z
$ echo "~"
~
~
不是实际位置,它是 shorthand 主目录的路径。
如前所述,双引号已禁用 ~
扩展。
更好的方法是使用 HOME
变量:
SRC_DIR="$HOME/Library/Preferences-Old"
DST_DIR="$HOME/Library/Preferences"
~
是规则 "When in doubt, quote" 的少数例外之一。正如其他人指出的那样,引用的 ~
不受扩展限制。但是,您仍然可以引用字符串的 rest:
SRC_DIR=~"/Library/Preferences-Old"
DST_DIR=~"/Library/Preferences"
请注意,根据分配给两个 *_DIR
变量的值,仅引用所分配的值是不够的;你仍然需要引用他们的扩展。
FILEN="test.txt"
cp "$SRC_DIR/$FILEN" "$DST_DIR"