如何将Automator的MovieTitle变量传入Shell脚本创建父目录
解决Automator中Shell脚本创建MovieTitle父目录的问题
以下是针对你遇到问题的具体解决步骤:
确认变量传递有效性
Automator的自定义变量需要正确传递到Shell脚本中:- 在「运行Shell脚本」动作里,设置「传递输入」为「作为参数」。
- 将Automator中创建的
MovieTitle变量拖入脚本编辑框,脚本会自动引用该变量(通常为$1,如果有其他参数则对应调整位置)。 - 可在脚本开头添加
echo "$MovieTitle"验证变量是否正确获取,若输出为空则检查变量设置环节。
修正目录创建逻辑
默认情况下Automator的Shell脚本工作目录是用户Home目录,若要在文件所在目录创建父目录,需先定位到文件路径:# 获取目标文件所在目录(假设第一个文件参数为$2) target_dir=$(dirname "$2") # 切换到目标目录,失败则退出脚本 cd "$target_dir" || exit 1 # 创建MovieTitle父目录及4个VOD子目录 mkdir -p "$MovieTitle"/{Amazon,iTunes,Netflix,Hulu}用
mkdir -p可一次性创建多级目录,避免分步创建的路径问题,同时双引号包裹变量确保空格、特殊字符(如&、*)能被正确解析。权限与路径排查
若仍创建失败,可在脚本中添加以下命令排查:# 输出当前用户与工作目录 whoami pwd # 检查目标路径是否可写入 test -w "$target_dir" && echo "路径可写入" || echo "无写入权限"若显示无权限,需调整目标目录的权限设置或切换到有权限的路径操作。
完整示例脚本
结合文件分类逻辑的完整脚本参考:# 获取MovieTitle变量与目标文件路径 MovieTitle="$1" target_dir=$(dirname "$2") cd "$target_dir" || exit 1 # 创建父目录及VOD子目录 mkdir -p "$MovieTitle"/{Amazon,iTunes,Netflix,Hulu} # 文件分类移动示例 mv *Amazon* "$MovieTitle/Amazon/" 2>/dev/null mv *iTunes* "$MovieTitle/iTunes/" 2>/dev/null mv *Netflix* "$MovieTitle/Netflix/" 2>/dev/null mv *Hulu* "$MovieTitle/Hulu/" 2>/dev/null末尾的
2>/dev/null用于屏蔽无匹配文件时的错误提示。
内容的提问来源于stack exchange,提问作者Kevin Georgiades
相关产品推荐
相关产品推荐

