我正在尝试git
使用此处概述的方法修改 的行为,但我在如何正确传递 的内容$@
而不丢失原始输入的引号方面遇到了困难。
基本上,我有这个:
# foo.sh
#!/bin/bash
cmd=$1
shift
args=$@
if [ $cmd == "bar" ]; then args=('--baz' "${args[@]}"); fi
echo git $cmd ${args[@]}
Run Code Online (Sandbox Code Playgroud)
但是当我运行时./foo.sh bar -a "one two three"
,它输出(因此会运行), ./foo.sh bar --baz -a one two
,而不是./foo.sh bar --baz -a "one two"
我需要的。
我无法弄清楚如何正确传递$@
给另一个命令并保留引用的参数。是否可以?如何?
bash ×1