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

标签 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

最佳答案

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

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

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

关于linux - 带有使文件可执行的参数的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27744162/

相关文章:

bash - 从同一脚本杀死其他 bash 守护进程

bash - 如何将位置参数传递给交互式 bash session

linux - 为什么我的 shell (sh) 变量在命令模式下没有导出?

linux - 使用 bash 脚本查找以太网地址

c++ - 静态库,链接到共享库

c - 尽管从 pthread_create() 返回成功,但没有创建线程

linux - 如何用新的标题和结尾字符串替换目录中所有文件的标题和结尾,但仅限于特定字符?

C shell,父进程捕获的信号仍然转到子进程。

docker - 在 Docker 中创建 Kafka 主题可以通过命令行进行,但不能通过 Shell 脚本文件进行

c - Hook fopen() 函数抛出段错误