使用nohup调用带参数的shell脚本方法

fruv7luv  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(532)

/bin/指令码/第一个.ksh

#!/bin/bash
start(){
   first="$1";
   echo "arg is $first"
}

/bin/脚本/second.sh

#!/bin/bash
nohup sh /bin/scripts/first.ksh start arg1 > nohup_log 2>&1 &

参数没有被拾取。在第二个脚本中传递参数的正确方法是什么?

bf1o4zei

bf1o4zei1#

如果你传递参数,你必须以某种方式使用它们。

start(){
 first="$1";
 echo "arg is $first"
}

"$@"

最后一行--在您的例子中--扩展为start arg1,因此调用您的函数。但是这样做是有风险的:由于脚本的第一个参数(即 start)被视为要执行的命令,脚本的用户可以通过该参数注入任何代码。这是一个严重的安全漏洞。
我至少会验证第一个参数,或者完全重新设计你的脚本。例如,如果脚本除了调用这个函数之外没有做任何其他事情,那么你就不清楚为什么要定义一个函数。

相关问题