引用包含引号的文件名,并在Bash中作为变量给出

时间:2017-03-01 14:06:39

标签: linux bash macos command-line

假设我在变量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?>

1 个答案:

答案 0 :(得分:4)

行情不只是针对空间而是针对所有内容,因此使用双引号是您需要的安全级别。

来自Bash Reference Manual on Quoting

  

3.1.2.3双引号

     

用双引号括起字符('&#34;')会保留引号内所有字符的字面值,但'$','`','\'以及启用历史记录扩展时除外,'!'。

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

async/await

读入var:

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

检查其值:

$ filename=$(<file)

使用此值创建文件:

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

检查它是否已成功创建:

$ touch "$filename"