编写脚本第一个参数:文件/目录,其他参数:命令

编写脚本第一个参数:文件/目录,其他参数:命令

我想创建一个接收以下结构的参数列表的脚本:

  • 第一个参数:文件或目录
  • 其他参数:系统中命令的名称,例如date, pwd, tail, head, ls

该脚本将对作为第一个参数接收的文件/目录运行所有命令(从第二个参数开始)。

我尝试了这个脚本,但我无法使用命令选项,-l -i -n 所以我该怎么做?

#!/bin/bash

name=$1
shift

for cmd in "$@" 
do
    if [ -e $name ]
    then
        echo Executing:$cmd
        ($cmd $name)2>/dev/null
        if [ $? -ne 0 ]
        then
            echo error
        fi
    else
        exit 7
    fi
done

答案1

getopts或者getopt就是答案。

getopts例如,可以使用短键,-i并且更容易使用。它也是 bash 内置的并且始终可用。

getopt是一个外部工具,它可以使用像--input-file、 之类的长参数,并且使用起来有点困难。这是一个外部工具,理论上可以不存在,但是......

请阅读此处的简单教程: https://dustymabe.com/2013/05/17/easy-getopt-for-a-bash-script/

相关内容