我有一个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
。
我看过this question on 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
我做错了什么?这里有什么好的组合?
答案 0 :(得分:14)
您需要在使用变量时引用变量。扩展变量经历了单词分裂。无论您是否希望它包含特殊字符或空格,始终引用您的扩展是一种很好的做法。引用时也不需要转义空格。
以下将做你想做的事:
outputdir='/Volumes/ADATA UFD/Programming/Qt'
mkdir -pv "$outputdir"
答案 1 :(得分:12)
传递给mkdir
命令时变量的双引号:
mkdir -pv "$outputdir"