有人能帮助我完成这个脚本吗?

有人能帮助我完成这个脚本吗?

我无法让以下命令选项 -s 和 -f 显示我需要的内容。参数识别得很好。

#!/bin/bash
defaultPath="/etc/passwd"
defaultShell="/bin/bash"
h_on=0
f_on=0
s_on=0

set -- $(getopt f:hs: "$@")  

while [ -n "$1" ]
do
   case "$1" in
      -f) f_on=1 ;;
      -h) h_on=1 ;;
      -s) s_on=1 ;;
      --) shift
          break ;;
   esac
   shift
done
   
if [ $h_on -eq 1 ]
then
   echo
   echo "Usage: shellsearch [OPTION...]"
   echo
   echo "-f FILE   Search in FILE. FILE must be formatted"
   echo "          like /etc/passwd."
   echo "          Defaults to /etc/passwd if not provided
   echo
   echo "-h        Display usage information."
   echo
   echo "-s SHELL  Display users with SHELL shell."
   echo "          SHELL must be in /etc/shells."
   echo "          Defaults to /bin/bash if not provided."
   exit 0
fi

if  [ $f_on -eq 1 ]
then
   echo "is $file readable?" '
fi

if [ $s_on -eq 1 ]
then 
   echo "is $shell a shell?"
fi

我想要的输出如下:

Input file: $file
Displaying users with shell $shell.

如果有人能提供帮助/建议我将不胜感激。

答案1

使用getopts以下示例如

while getopts "f:hs:" opt
do
   case "${opt}" in
      f) f_on=1 ; file=${OPTARG};;
      h) h_on=1 ;;
      s) s_on=1 ; shell=${OPTARG};;
   esac
done

此外,请注意此行中的引文

echo "          Defaults to /etc/passwd if not provided"

在那一行

echo "is $file readable?"

相关内容