是否有任何理由在 bash 文件名扩展中转义点?

是否有任何理由在 bash 文件名扩展中转义点?

我正在使用其他人编写的 bash 脚本,我看到以下行:

cp -v  ${LOG_DIR}/${APPLICATION}\.*.log ${ARCHIVED_LOG_DIR}

它所使用的文件的命名方式如下:

EXAMPLE.command1.log EXAMPLE.command2.log

由于在文件名扩展中没有对点进行特殊处理,因此反斜杠是否有任何原因转义点?这样做与不使用反斜杠相比有何影响?:

cp -v  ${LOG_DIR}/${APPLICATION}.*.log ${ARCHIVED_LOG_DIR}

答案1

没有区别。该点.不是一个特殊外壳字符需要引用,反斜杠将在报价删除。这在大多数 shell 中都是如此,而不仅仅是bash.

答案2

不是 @jw013 已经解决的问题的答案,但请注意,虽然 和\{}这里是多余的,但还缺少一些东西。就像变量应该被引用一样,并且--缺少标记选项的结尾。

cp -v -- "$LOG_DIR/$APPLICATION".*.log "$ARCHIVED_LOG_DIR"

相关内容