Shell脚本:cat配置存档

时间:2013-04-28 01:10:38

标签: linux bash shell

现在在bash脚本中我有这个:

firstParam=$1
secondPara=$2
if [ -n $firstParam ] ; then 
    if [ $firstParam != "--x" ] ; then
        echo "Incorrect"
    else
       if [ -n $secondParam ]; then
           cat $secondParam
       else
           echo "Need file"
       fi    
   fi
fi

此脚本应打开配置文件,并仅显示未注释的行(#,;或/)。第一个参数也不是强制性的。 你能帮我吗?我不知道我怎么能说第一个参数是不必要的,如果你不把它放在它也可以做CAT。我的意思是你可以用“name.sh file.conf”或“name.sh --x file.conf”执行脚本

PS:第一个参数是一个函数,如果你运行带有“--x file.conf”的脚本,它将执行“cat -n”。

1 个答案:

答案 0 :(得分:2)

这是我通常处理参数的方式。我认为这是你使用的好基地:

XPARAM=false
OPARAM="default value"
FILENAME="/dev/stdin"

while [ $# -gt 0 ]; do
    case "$1" in
        -x|--x-long-form)
            XPARAM=true
            ;;
        -o|--option-with-arg)
            shift
            OPARAM="$1"
            ;;
        -h|--help)
            echo "usage: $0 [-x] [-o arg] FILENAME"
            exit #Don't need to do more when the user admits confusion ;-)
            ;;
        *)
            if [ "$1" == "" ]; then
                echo >&2 "I hate you"
                exit 1
            fi
            FILENAME="$1"
            ;;
    esac
    shift
done

if $XPARAM; then
    # Handle -x
fi

cat "$FILENAME"

这将选项的处理与它们所做的逻辑以及如何解释它们分开,例如:是否需要或相互排斥。这也很好,因为while ... case ... shift的东西可以被复制粘贴到一个新的程序,它完全不同地处理它的args - 只需要更改case分支。