Shell脚本学习-传参的方式往配置文件中写数据

生产案例:实现通过传参的方式往/etc/open_authfile.conf里添加用户,具体要求:

1)命令用法:

USAGE: sh adduser {-add|-del|-search} username

2)传参要求:

参数-add: 表示添加后面接的用户名;

参数-del:表示删除后面接的用户名;

参数-search:表示查询后面接的用户名;

3)如果是有同名的用户,则不能添加、如果没有对应的用户,则无需删除,查找到用户或者没有用户应给出明确的提示信息:

4)/etc/open_authfile.conf不能被所有外部普通用户直接删除或更改。

脚本:

[root@vm1 scripts]# cat add-open-user.sh
#!/bin/bash
#

# source function library
[ -f /etc/init.d/functions ] && . /etc/init.d/functions || exit 1

# judge file exist
FILE_PATH=/etc/open_authfile.conf
[ ! -f "$FILE_PATH" ] && touch $FILE_PATH

#usage
usage() {
  cat </dev/null 2>&1 ]
      then
        action "user $1 is exist." /bin/false
    else
        chattr -i ${FILE_PATH}
        /bin/cp ${FILE_PATH} ${FILE_PATH}.$(date +%F)
        echo "$1" >> ${FILE_PATH}
        [ $? -eq 0 ] && action "Add user $1 successfully." /bin/true
        chattr +i ${FILE_PATH}
    fi
    ;;
  -d|-del)
    shift
    if [ `grep "^$1$" ${FILE_PATH}|wc -l` -lt 1 ]
      then
        action "user $1 is not exist." /bin/false
    else
        chattr -i ${FILE_PATH}
        /bin/cp ${FILE_PATH} ${FILE_PATH}.$(date +%F)
        sed  -i "/^${1}$/d" ${FILE_PATH}
        [ $? -eq 0 ] && action "Del $1 successfully" /bin/true
        chattr +i ${FILE_PATH}
        exit
    fi
    ;;
  -s|-search)
    shift
    if [ `grep -w "$1" ${FILE_PATH} | wc -l` -lt 1 ]
      then
        echo "user $1 is not exist.";exit
    else
        echo "user $1 is exist.";exit
    fi
    ;;
   *)
     usage
     exit
     ;;
esac

这是一个往文件里写数据的脚本。非常棒。值得仔细阅读,并在工作中参考该代码。

你可能感兴趣的:(Shell,linux)