转义文件名中的空格在脚本中不起作用
Escaping spaces in filename is not working inside script
在命令行中,cat
按预期工作:
cat /home/me/path\ with\ spaces/to/file
但是如果我把它放在脚本中:
#!/bin/bash
FILE=""
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
注意转义引号,它们应该位于正确的位置。
什么给了?
简单的用双引号防止分词:
cat "$FILE"
另外,shell 内部变量应保留大写变量名,因此您应将 FILE
更改为 file
。
如果您引用脚本的参数(这是个好主意),则文件名不需要反斜杠:
./script.sh "/home/me/path with spaces/to/file"
在命令行中,cat
按预期工作:
cat /home/me/path\ with\ spaces/to/file
但是如果我把它放在脚本中:
#!/bin/bash
FILE=""
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
注意转义引号,它们应该位于正确的位置。
什么给了?
简单的用双引号防止分词:
cat "$FILE"
另外,shell 内部变量应保留大写变量名,因此您应将 FILE
更改为 file
。
如果您引用脚本的参数(这是个好主意),则文件名不需要反斜杠:
./script.sh "/home/me/path with spaces/to/file"