小编Tom*_*han的帖子

将 $@ 传递给命令,保留引号

我正在尝试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

7
推荐指数
1
解决办法
4324
查看次数

标签 统计

bash ×1