/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 &
参数没有被拾取。在第二个脚本中传递参数的正确方法是什么?
bf1o4zei1#
如果你传递参数,你必须以某种方式使用它们。
start(){ first="$1"; echo "arg is $first" } "$@"
最后一行--在您的例子中--扩展为start arg1,因此调用您的函数。但是这样做是有风险的:由于脚本的第一个参数(即 start)被视为要执行的命令,脚本的用户可以通过该参数注入任何代码。这是一个严重的安全漏洞。我至少会验证第一个参数,或者完全重新设计你的脚本。例如,如果脚本除了调用这个函数之外没有做任何其他事情,那么你就不清楚为什么要定义一个函数。
start arg1
1条答案
按热度按时间bf1o4zei1#
如果你传递参数,你必须以某种方式使用它们。
最后一行--在您的例子中--扩展为
start arg1
,因此调用您的函数。但是这样做是有风险的:由于脚本的第一个参数(即 start)被视为要执行的命令,脚本的用户可以通过该参数注入任何代码。这是一个严重的安全漏洞。我至少会验证第一个参数,或者完全重新设计你的脚本。例如,如果脚本除了调用这个函数之外没有做任何其他事情,那么你就不清楚为什么要定义一个函数。