Bash 带有使文件可执行的参数的脚本

Bash script with argument that makes file executable

我需要制作一个 bash 脚本来检查文件或目录是否存在,如果文件存在,它会检查可执行文件 permission.I 需要修改脚本才能提供来自参数的文件可执行权限。

示例:控制台输入 ./exist.sh +x file_name 应该使文件可执行。

这是未完成的代码,用于检查 file/directory 是否存在以及文件是否可执行。我需要添加 chmod 参数部分。

#!/bin/bash
file=
if [ -x $file ]; then
    echo "The file '$file' exists and it is exxecutable"

else
    echo "The file '$file' is not executable (or does not exist)"

fi

if [ -d $file ]; then
    echo "There is a directory named '$file'"

else
    echo "There is no directory named '$file'"

fi

添加 chmod 如下:

if [ ! -x "$file" ]; then
   chmod +x $file
fi

这意味着如果文件没有执行权限,则为用户添加执行权限。

如果您的脚本有可选参数,您需要先检查它们。

在只有几个简单参数的情况下,显式检查它们会更简单。

MAKEEXECUTABLE=0
while [ "${1:0:1}" = "+" ]; do
  case  in
     "+x")
         MAKEEXECUTABLE=1
        shift
        ;;
     *)
        echo "Unknown option ''"
        exit
   esac
done
file=

然后在您确定该文件不可执行后

if [ $MAKEEXECUTABLE -eq 1 ]; then
   chmod +x $file
fi 

如果您决定添加更复杂的选项,您可能需要使用 getops:example of how to use getopts in bash