/ bin / bash命令中函数的函数参数

问题描述 投票:0回答:1

我不得不使用从/ bin / bash调用的一些bash代码作为跟随-c选项的命令。我得到了一些难以理解的东西。这按预期通过:

root@punk:/home/s# function a () { echo $1 "world";}&&a hello
hello world
root@punk:/home/s# 

但这错过了函数的参数

root@punk:/home/s# /bin/bash -c "function a () { echo $1 "world";}&&a hello"
world
root@punk:/home/s# 

如何解决第二种情况?

bash function parameters parameter-passing
1个回答
1
投票

因为你使用的是双引号

/bin/bash -c "function a () { echo $1 "world";} && a hello"

$1的当前值将被替换,在您的环境中必须为空,因此它将成为

/bin/bash -c "function a () { echo "world";} && a hello"

这实际上是

/bin/bash -c "function a () { echo world;} && a hello"

.

您可以使用单引号进行外引用:

[STEP 101] # /bin/bash -c 'function a () { echo $1 "world";} && a hello'
hello world
[STEP 102] #
© www.soinside.com 2019 - 2024. All rights reserved.