在命令行中,此cat
按预期工作:
cat /home/me/path\ with\ spaces/to/file
但如果我把它放在一个脚本中:
#!/bin/bash
FILE="$1"
cat $FILE # cat "$FILE" gives same result
并使用./script.sh "/home/me/path\ with\ spaces/to/file"
调用脚本,我得到:
cat: /home/me/path\ with\ spaces/to/file: No such file or directory
请注意转义引号,它应位于正确的位置。
是什么给出了?
答案 0 :(得分:1)
只需使用双引号来防止分词:
cat "$FILE"
另外,应为shell内部变量保留大写变量名,因此您应将FILE
更改为file
。
如果你引用你的脚本的参数(这是一个好主意),那么文件名不需要反斜杠:
./script.sh "/home/me/path with spaces/to/file"