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

时间:2015-01-02 15:04:42

标签: linux bash shell

我需要创建一个bash脚本来检查文件或目录是否存在,然后如果文件存在,它会检查可执行权限。我需要修改脚本以便能够从参数中赋予文件可执行权限。

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

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

#!/bin/bash
file=$1
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

2 个答案:

答案 0 :(得分:1)

添加chmod,例如:

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

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

答案 1 :(得分:1)

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

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

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

然后确定该文件不可执行

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

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