如何在Bash中将任意数量命令行键值对参数的=替换为:
Bash中批量替换命令行参数的
=为: 针对参数数量不固定的场景,可以用Bash数组安全处理每个参数,具体实现如下:
封装成函数(推荐)
写一个包装函数,自动处理所有参数里的=,再调用目标命令:
send_wrapper() { local processed=() for arg in "$@"; do # 把当前参数里的所有=替换成: processed+=("${arg//=/:}") done # 执行处理后的命令 "${processed[@]}" }
使用的时候直接用这个函数替代原send命令:
send_wrapper url key1=value1 key2=value2 key3=value3
实际执行的命令会变成:
send url key1:value1 key2:value2 key3:value3
这种方法能完美处理带空格的参数,比如key4="hello world"这类情况也不会出错。
临时快速处理(适合单次使用)
如果不想写函数,也可以用一行命令直接处理,但注意这种方式在参数包含空格时可能失效:
send $(echo "$*" | sed 's/=/:/g')
内容的提问来源于stack exchange,提问作者Mohammad Miras
相关产品推荐
相关产品推荐

