我有这个脚本:
#!/bin/sh -x
/bin/echo "Drag folder into Terminal and hit return ->"
/usr/bin/read folderLocation
/bin/cp -R "$folderLocation" /Users/my/Desktop/
返回结果:
+ /bin/cp -R '' /Users/my/Desktop/
cp: fts_open: No such file or directory
知道这是为什么吗?
感谢您的见解!
答案1
我在 Debian Gnu/Linux 上让它工作了:
#!/bin/sh -x
/bin/echo "Drag folder into Terminal and hit return ->"
read folderLocation
eval "cp -R -t '/home/my/Desktop' $folderLocation"
/usr/bin
我删除了 read 的路径(你可能不必(read 是 bash 的内置路径,在or中找不到它/bin
)
最后一行是重要的变化:
- -t 选项后跟目标目录使得 cp 更加健壮。
- 由于 read 的返回值被引号括起来,因此需要 eval。
至于为什么会得到 ''(读取时为空字符串)。我猜是因为拖放功能不起作用,这不是 shell 的功能,而是终端和文件管理器的功能。你使用的是什么终端程序?