繁体   English   中英

使用变量将路径传递到BASH脚本

[英]Passing a path to BASH script with a variable

我已经写了一个小脚本,在OSX中使用hdiutil ,但是在将路径传递到包含空格的输出变量时遇到了问题。 只需通过用户将路径文件夹拖动到终端窗口,然后将其读取到变量中即可生成路径。 基本上我有路径:

echo "Drag Destination Folder to Window or Leave Blank to Create on Desktop:"
read createDest
createDest=$(echo "$createDest" | sed 's/ /\\ /g')

然后,我提示输入所需的名称

echo "Enter Name for Image (also used for Volume):"
read varName
varName=$(sed -e 's/[^A-Za-z0-9._-]/_/g' <<< $varName) #remove illegal chars

将它们与path=$(echo ${createDest}/${varName})

最后用生成文件

Echo -n $varPass | hdiutil create -encryption -stdinpass -type SPARSEBUNDLE -size ${varSize}G -fs HFS+J -volname $varName $path

只要路径中没有空格,所有这些都可以正常工作,但是一旦我从hdiutil收到一条错误hdiutil说明:

hdiutil: create: Only one image can be created at a time.

如果我手动输入密码的话,我对格式哪里出了问题有些困惑。

任何帮助将不胜感激。

干杯

克里斯

在所有位置引用所有变量:

echo -n "$varPass" | hdiutil create -encryption -stdinpass -type SPARSEBUNDLE -size "${varSize}G" -fs HFS+J -volname "$varName" "$path"

您需要做的就是引用参数扩展名。 这足以保护空白。 手动添加反斜杠仅会创建一个不代表现有路径的值。

echo "Drag Destination Folder to Window or Leave Blank to Create on Desktop:"
read createDest

echo "Enter Name for Image (also used for Volume):"
read varName
varName=${varName//[^[:alnum:]._-]/_}  # more efficient than running sed

printf '%s' "$varPass" | hdiutil create -encryption -stdinpass -type SPARSEBUNDLE -size "${varSize}G" -fs HFS+J -volname "$varName" "$path"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM