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



/bin/scripts/first.ksh

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

/bin/scripts/second.sh

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

这个论点没有被采纳。在第二个脚本中传递参数的正确方式是什么?

如果传递参数,则必须以某种方式使用它们。一种可能性是从技术上讲,把你的脚本写成

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

在您的情况下,最后一行将扩展到start arg1,因此调用您的函数但是这样做是有风险的:由于脚本的第一个参数(即start)被视为要执行的命令,因此脚本的用户可以通过该参数注入任何代码。这是一个严重的安全漏洞。

我至少会以某种方式验证第一个参数,或者完全重新设计您的脚本。例如,如果脚本除了调用这个函数之外没有做任何其他事情,那么就不清楚为什么要定义一个函数。

相关内容

  • 没有找到相关文章

最新更新