我需要编写一个bash脚本,除其他外,应该将其所有参数原封不动地传递给另一个程序。
最小例子:
$ cat >proxy.sh #!/bin/bash ./script.sh $@ ^D $ chmod +x proxy.sh $ cat >script.sh #!/bin/bash echo one $1 echo two $2 echo three $3 ^D $ chmod +x script.sh
这种天真的方法不适用于带空格的参数:
$ ./proxy.sh "a b" c one a two b three c
预期:
$ ./proxy.sh "a b" c one a b two c three
我应该在proxy.sh
写一下这个怎么发生?
请注意,我不能使用别名,proxy.sh
必须是一个脚本 - 它在调用script.sh
之前会执行一些操作。
答案 0 :(得分:11)
引用$@
,将其设为"$@"
:
$ cat >proxy.sh
#!/bin/bash
./script.sh "$@"
^D
然后它保留原始引号:
one a b
two c
three