在我的bash脚本中,我以另一个用户身份执行一些命令。我想用bash函数调用 su
。
my_function()
{
do_something
}
su username -c "my_function"
上面的脚本不起作用。当然, my_function
里面没有定义 su
。我的一个想法是将函数放入一个单独的文件中。你有更好的想法,避免制作另一个文件?
在我的bash脚本中,我以另一个用户身份执行一些命令。我想用bash函数调用 su
。
my_function()
{
do_something
}
su username -c "my_function"
上面的脚本不起作用。当然, my_function
里面没有定义 su
。我的一个想法是将函数放入一个单独的文件中。你有更好的想法,避免制作另一个文件?
您可以导出该函数以使其可用于子shell:
export -f my_function
su username -c "my_function"
您可以在系统中启用“sudo”,然后使用它。
您可以导出该函数以使其可用于子shell:
export -f my_function
su username -c "my_function"
您可以在系统中启用“sudo”,然后使用它。
您必须在使用它的同一范围内具有该功能。因此,要么将函数放在引号内,要么将函数放到单独的脚本中,然后使用su -c运行。
另一种方法是制作案例并将参数传递给执行的脚本。 示例可以是: 首先创建一个名为“script.sh”的文件。 然后在其中插入此代码:
#!/bin/sh
my_function() {
echo "this is my function."
}
my_second_function() {
echo "this is my second function."
}
case "$1" in
'do_my_function')
my_function
;;
'do_my_second_function')
my_second_function
;;
*) #default execute
my_function
esac
添加上面的代码后,运行这些命令以查看它的运行情况:
root@shell:/# chmod +x script.sh #This will make the file executable
root@shell:/# ./script.sh #This will run the script without any parameters, triggering the default action.
this is my function.
root@shell:/# ./script.sh do_my_second_function #Executing the script with parameter
this function is my second one.
root@shell:/#
为了使你的工作按照你的要求你只需要运行
su username -c '/path/to/script.sh do_my_second_function'
一切都应该工作正常。 希望这可以帮助 :)