【问题标题】:Quote a filename containing quotes and given as variable in Bash引用包含引号的文件名并在 Bash 中作为变量给出
【发布时间】:2017-03-01 14:06:38
【问题描述】:

假设我在变量DIR 中有一个目录路径,我想列出这个目录。如果我只关心路径中的空格,那么我可以这样做

ls "$DIR"

如果我还想在目录路径中支持单引号和双引号以及其他奇怪的东西,我应该写什么?示例:

DIR="/Users/Mick O'Neil (the \"Terminator\")/Desktop"
echo $DIR # prints /Users/Mick O'Neil (the "Terminator")/Desktop
ls <what should I write here?>

【问题讨论】:

标签: linux bash macos command-line


【解决方案1】:

引号不仅适用于空格,还适用于所有内容,因此使用双引号是您需要的安全级别。

来自Bash Reference Manual on Quoting

3.1.2.3 双引号

将字符括在双引号 ('"') 中会保留引号内所有字符的字面值,但 '$'、'`'、'\' 以及启用历史扩展时,'! '。


让我们将此字符串存储到文件中以供以后使用。

$ cat file
Mick O'Neil (the "Terminator")

读入一个变量:

$ filename=$(<file)

检查它的值:

$ echo "$filename"
Mick O'Neil (the "Terminator")

用这个值创建一个文件:

$ touch "$filename"

检查是否创建成功:

$ lt "$filename"
-rw-r--r-- 1 me me 0 Mar  1 15:09 Mick O'Neil (the "Terminator")

【讨论】:

  • 哇,所以这不是问题 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2012-06-24
  • 2021-10-04
  • 2016-09-25
  • 2015-10-08
  • 2018-09-02
  • 2012-12-02
相关资源
最近更新 更多