什么是./lks.sh:运行shell脚本时Linux中的权限被拒绝了?

LOK*_*ESH 3 unix linux bash shell

当我lks.sh在我的系统中运行文件时,显示权限被拒绝:

./lks.sh  bash: ./lks.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能运行这个shell脚本?

这是我的.sh档案:

lokesh = "wait"
if[$lokesh == "wait"]
        echo "$lokesh"

else
        sudo shutdown -h now
Run Code Online (Sandbox Code Playgroud)

Jak*_*uld 5

您的脚本有一些问题.

首先,"权限被拒绝"很可能是因为您的脚本没有允许脚本实际运行的执行权限.所以你需要chmod像这样:

chmod 755 lks.sh
Run Code Online (Sandbox Code Playgroud)

然后你应该能够运行它.FWIW,在给予组成员和其他人执行和读取权限的同时7,755为您提供所有者执行,读取和写入5权限.随意更改,744以便您是唯一可以编辑该脚本的人,但其他人 - 通过4- 可以阅读它.或者即便700如此,你是唯一一个可以对该剧本做任何事情的人.

但是说,你的变量赋值似乎是关闭的:

lokesh = "wait"
Run Code Online (Sandbox Code Playgroud)

根据我的经验,这周围应该没有空格=:

lokesh="wait"
Run Code Online (Sandbox Code Playgroud)

接下来,这在语法上是不正确的:

if[$lokesh == "wait"]
Run Code Online (Sandbox Code Playgroud)

它应该是:

if [ $lokesh == "wait" ]
Run Code Online (Sandbox Code Playgroud)

最后你的整个if/ else语法是不正确的; 没有then,没有关闭fi.所以这是你最后清理过的脚本:

lokesh="wait"
if [ $lokesh == "wait" ]; then
    echo "$lokesh"
else
    sudo shutdown -h now
fi
Run Code Online (Sandbox Code Playgroud)

也就是说,最直接的问题是执行权问题,但其他事情肯定会扼杀你的脚本.