11

我有一个 bash 初学者问题:
我要创建的路径是/Volumes/ADATA\ UFD/Programming/Qt,其中/Volumes/ADATA\ UFD已经存在。我想写一个如下形式的脚本:

# create a single output directory 
outputdir="/Volumes/ADATA\ UFD/Programming/Qt"
mkdir -pv $outputdir

我的问题是mkdir创建目录/Volumes/ADATA./UFD/Programming不是创建/Volumes/ADATA\ UFD/Programming/Qt.

在 SO 上看过这个问题;但是,这些解决方案都不起作用:

outputdir=/Volumes/"ADATA\ UFD/Programming/Qt"
mkdir -pv $outputdir

outputdir=/Volumes/'ADATA\ UFD/Programming/Qt'
mkdir -pv $outputdir

outputdir='/Volumes/ADATA\ UFD/Programming/Qt'
mkdir -pv $outputdir

outputdir=/Volumes/ADATA' 'UFD/Programming/Qt
mkdir -pv $outputdir

我究竟做错了什么?这里有什么好的组合?

4

2 回答 2

19

使用变量时需要引用它们。扩展变量会进行分词。无论您是否希望它包含特殊字符或空格,始终引用您的扩展是一种很好的做法。引用时也不需要转义空格。

以下将做你想要的:

outputdir='/Volumes/ADATA UFD/Programming/Qt'
mkdir -pv "$outputdir"
于 2012-12-05T22:44:41.607 回答
15

mkdir传递给命令时,变量周围的双引号:

mkdir -pv "$outputdir"
于 2012-12-05T22:43:11.917 回答