use*_*050 24 shell-script arguments
我试图将多个参数传递给一个函数,但其中一个由两个词组成,我希望 shell 函数将它作为一个参数来处理:
args=("$@")
function(){
echo ${args[0]}
echo ${args[1]}
echo ${args[2]}
}
Run Code Online (Sandbox Code Playgroud)
当我调用这个命令时 sh shell hi hello guys bye
我明白了
hi
hello
guys
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是:
hi
hello guys
bye
Run Code Online (Sandbox Code Playgroud)
sil*_*nky 19
你应该只引用第二个参数。
myfunc(){
echo "$1"
echo "$2"
echo "$3"
}
myfunc hi "hello guys" bye
Run Code Online (Sandbox Code Playgroud)
ctr*_*lor 10
它与从 shell 调用任何东西(shell 脚本、C 程序、python 程序……)相同
如果从任何 Unix shell 调用,并且参数有空格,则需要引用它。
sh my-shell-script hi "hello guys" bye
Run Code Online (Sandbox Code Playgroud)
你也可以使用单引号,这些更强大。它们阻止 shell 解释任何东西($, !, \, *, ", 等等,除了')
sh my-shell-script hi 'hello guys' bye
Run Code Online (Sandbox Code Playgroud)
您还应该引用函数/脚本中使用的每个变量。
请注意,在您的示例中,参数在到达函数之前就分崩离析了(因为它们被传递给脚本)。
#!/bin/sh
my_procedure{
echo "$1"
echo "$2"
echo "$3"
}
my_procedure("$@")
Run Code Online (Sandbox Code Playgroud)
在脚本中无法自动执行此操作,因为脚本无法知道哪些空格是哪个(哪些单词在一起)。