转义文件名中的空格在脚本中不起作用

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"