脚本练习——判断语句

1、编写脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息
#!/bin/bash
#判断参数是否是一个,否则退出
[ “$#” -ne 1 ] && echo “Please Input a usrename.” && exit
#判断用户是否存在,不存在则创建
if id “$1” &>/dev/null ;then
  echo “Your user is exist.”
else
  useradd “$1” &>/dev/null
echo “$1 create finished.”
  echo “$1: `id $1`”
fi
2、编写脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
#!/bin/bash
read -p “Please Input a choose(yes or no)?: ” ANS
#判断用户输入的值
case $ANS in
[Yy]|[Yy][Ee][Ss])
echo “Your answer is YES!”
;;
[Nn]|[Nn][Oo])
echo “Your answer is NO!”
;;
*)
echo “Please input (yes or no).”
;;
esac
3、编写脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)
#!/bin/bash
read -p “Input a file or dir: ” choose
[ -z “$choose” ] && echo “Please Input a file or dir.”
if [ -d “$choose” ] ;then
  echo “$choose is directory.”
elif [ -L “$choose” ] ;then
  echo “$choose is a link.”
elif [ -f “$choose” ] ;then  #注意:用-f判断符号链接返回的也是真,所以我放到了最后判断是否为普通文件
  echo “$choose is a common file.”
else
  echo “$choose is other type.”
fi
4、编写脚本/root/bin/checkint.sh,判断用户输入的参数是否为正整数
#!/bin/bash
read -p “Input a digit.: ” NUM
#判断用户输入的值是否可以被“[0-9]+”模式匹配到,如果匹配到就是正整数
if [[ “$NUM” =~ ^[0-9]+$ ]] ;then
  echo “$NUM is a int.”
fi
5、使用svim.sh脚本创建或打开一个文件,如果是.sh文件结尾的文件则自动加执行权限和描述信息,并且在退出脚本时自动检查语法是否有错误,如果有错误则提示是否继续编辑,并显示错误行号,用户如果继续编辑则自动跳转到错误行;如果不是一个脚本文件则使用vim打开。

#!/bin/bash
# ——————————————–
# Filename: svim.sh
# Revision: 1.0v
# Date: 2018-04-10
# Author: LiDongfei
# Email: 652117746@qq.com
# Website: http://www.cnblogs.com/L-dongf
# Description: This is the create shell script
# ———————————————
# Copyright: 2018 Dongfei
# License: GPL

#一个函数,功能是退出时自动检查语法并提示

Edit() {
while [ “$Choice” != ‘N’ ]; do
ErrorLineNum=`bash -n $1 2>&1 |head -1 |tr ‘ ‘ ‘:’ |cut -d: -f4`
vim +${ErrorLineNum:-13} $1
ErrorLineNum=`bash -n $1 2>&1 |head -1 |tr ‘ ‘ ‘:’ |cut -d: -f4`
if bash -n $1 &>/dev/null; then
break
else
read -p “Syntax Error(line number: ${ErrorLineNum:-‘Unknown’}) Please connect? (y,N): ” Choice
fi
done
}

#判断用户的参数是否为一个,否则退出

[ “$#” -ne 1 ] && echo “Usage: `basename $0` script.sh” && exit 1

#判断用户参数是否以.sh结尾,如果不是则以vim打开,如果是.sh结尾,则执行以下脚本
if [[ ! “$1” =~ .+\.sh$ ]]; then
vim $1
exit 3
fi

#读入一个配置文件用于赋值

. /etc/svim.conf

#判断用户输入的文件是不是一个已存在的文件,如果不存在则创建一个并自动加入脚本描述信息
if [ ! -e “$1″ ]; then
cat >>$1 <<EOF
#!/bin/bash
# —————————————–
# Filename: ${1%.*}.sh
# Revision: 1.0v
# Date: `date +%F`
# Author: ${Author:-none}
# Email: ${Email:-none}
# Website: ${Website:-none}
# Description: This is the ${1%.*} script
# —————————————–
# Copyright: @2018 ${Copyright:-none}
# License: GPL

EOF
chmod +x $1
Edit $1
else
Edit $1
fi

附配置文件示例:

vim /etc/svim.conf
Author=”XXXX”
Email=”XXXX”
Website=”XXXX”
Copyright=”XXXX”

 

如果有错误的地方还请各位大佬相告之,感激不尽!!

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97490

(1)
lidongfeilidongfei
上一篇 2018-05-04 19:13
下一篇 2018-05-05 09:06

相关推荐

  • shell脚本之判断httpd是否有异常

    案例 以web为例 大全讲解:如http为例 #/etc/init.d/httpd start      开启httpd #lsof –i :80 [root@centos6 ~/bin]$curl -I -s -o /dev/null -w “%{http_code}\n” http://172.16.0.1 析:-I 是响应头,响…

    Linux笔记 2018-05-20
  • Tomcat的简介和应用

    tomcat的配置文件;tomcat的虚拟主机;tomcat的图形管理界面;tomcat的负载均衡;

    2018-07-16
  • 磁盘存储和文件系统

    磁盘存储和文件系统: 磁盘设备的文件命名:/dev/dev_file虚拟磁盘:/dev/vd磁盘标识: /dev/sda,/dev/sdb……磁盘分区:/dev/sda1,/dev/sdb2…… chs 磁盘sector 扇区 512bytestrack 磁道head 磁头cylinder柱面 使用磁盘: 分区创建文件系统:格式化挂载:分配目录名 hexdu…

    Linux笔记 2018-05-20
  • Linux的发行版,不同发行版之间的联系与区别

    Linux 主要作为Linux发行版(通常被称为”distro”)的一部分而使用。这些发行版的编写者包括个人、松散的小团体、商业机构、志愿者组织。通常而言,他们至少包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。   而一个典型的Linux发行版往往会包括:Linux内核…

    Linux笔记 2018-05-13
  • 正则表达式及vim使用方法

    正则表达式(正则表达式匹配的是文本内容中的字符串,通倍符匹配的是文件名)REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能程序支持:grep,sed,awk,vim, less,nginx,varnish等分两类:不同的命令支持不同的正则表达式基本正则表达式:BRE扩展正则表达式:EREgre…

    Linux笔记 2018-04-08
  • OSI七层模型和TCP/IP四层模型简介

    OSI七层模型和TCP/IP四层模型简介

    Linux笔记 2018-04-20