我正在尝试在shell脚本中将一组预定义的Chrome书签复制到Chrome将其保存在Mac上的位置(~/Library/Application Support/Google/Chrome/Default
)。在脚本中我有:
#!/bin/sh
bookmarks_dir="$HOME/Library/Application\ Support/Google/Chrome/Default"
cp -v "bookmarks/Bookmarks" "$bookmarks_dir"
但是当我跑步时,我得到了:
cp: /Users/aparkin/Library/Application\ Support/Google/Chrome/Default: No such file or directory
如果我复制&将路径粘贴到上面的错误消息中并手动执行cp:
cp -v bookmarks/Bookmarks /Users/aparkin/Library/Application\ Support/Google/Chrome/Default
它复制正常,因此目录确实存在。这似乎是路径中的空间绊倒了。
我错过了什么?我想如果变量用引号括起来,文件名中的空格不再导致问题吗?
答案 0 :(得分:3)
摆脱\
定义中的$bookmarks_dir
。它被视为文字\
:如果你做了$echo bookmarks_dir
,你就会看到它。
\
仅在您不在字符串周围添加引号时才有用。所以,
bookmarks_dir=$HOME/Library/Application\ Support/Google/Chrome/Default
也可以。