Zsh包装器:如何为Shell命令参数添加路径前缀?
实现带路径前缀转换的Zsh包装脚本
直接给出满足需求的myCmd.sh脚本:
#!/usr/bin/env zsh new_args=() for arg in "$@"; do if [[ "$arg" == /* ]]; then new_args+=("/mnt/d$arg") else new_args+=("$arg") fi done Cmd "${new_args[@]}"
脚本说明:
- 开头指定zsh解释器,避免环境差异导致的执行问题
- 用
new_args数组存储处理后的参数,保证带空格的参数不会被拆分出错 - 遍历所有传入的参数,对以/开头的绝对路径自动添加
/mnt/d前缀,其他参数原样保留 - 最后调用目标命令
Cmd并传递处理后的参数
额外提示:
- 如果需要支持相对路径(比如
./p1或p1/p2),可以把判断条件改成[[ "$arg" == */* ]],但要注意这种判断可能会误匹配类似a/b的非路径参数,根据实际需求调整即可 - 确保
Cmd命令在当前环境中能被找到,或者直接写它的绝对路径(比如/usr/local/bin/Cmd)
内容的提问来源于stack exchange,提问作者sun0727
相关产品推荐
相关产品推荐

