/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)被视为要执行的命令,因此脚本的用户可以通过该参数注入任何代码。这是一个严重的安全漏洞。
我至少会以某种方式验证第一个参数,或者完全重新设计您的脚本。例如,如果脚本除了调用这个函数之外没有做任何其他事情,那么就不清楚为什么要定义一个函数。