如何在shell脚本中以root身份运行函数

Egy*_*din 5 scripts

我想制作一个脚本并将其添加到快捷方式启动器...
当我双击该图标时,它会弹出一个终端窗口(完成)

在终端中,它首先会要求输入 root 密码,然后使用 root 权限做一些事情(我想把它作为一个函数)。

之后,在脚本结束时,它会像“按任意键关闭窗口”一样关闭窗口(我可以做到)

#!/bin/sh
touchpad(){
    whoami
}
sudo -S touchpad # but it return error "command not found"
Run Code Online (Sandbox Code Playgroud)

如何以 root 用户身份运行功能或有其他方法来完成此操作?

编辑:
我试过这个 #!/bin/bash

sudo ./main2.sh #this did not work when I made it as a launcher
exit 
Run Code Online (Sandbox Code Playgroud)

这是我当前的代码(谷歌搜索后):

#!/bin/bash

gksudo -m "Input Password" clear
sudo whoami
#sudo bla bla bla
read -n 1 -p "Press any key to close window"
Run Code Online (Sandbox Code Playgroud)

这就是我想要的,但是当我输入错误密码 3 次时出现错误。如果 gksudo 失败,如何强制退出主窗口?

psu*_*usi 2

测试gksudo的返回值:

if ! gksudo -m "Input Password" clear ; then
    echo Bad password
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)