cut命令、case与select语句
cut命令 常用参数: -c character 字符 -d delimiter 分隔符 -f field 域(列) --output-delimiter 输出分隔符 例: # echo 12345 |cut -c2 2 # echo 12345 |cut -c1,4 14 # echo 12345 |cut -c2-4 234 # ifconfig eth0 |grep Mask |cut -d " " -f12 |cut -d ":" -f2 # head -1 /etc/passwd | cut -d ":" -f 1,3,4 --output-delimiter="#" 1.case语句 (2) case语法 case "choice" in "var1" ) statement ;; "var2" ) statement ;; "var3" ) statement ;; * ) statement esac (2) 用法 从/etc/init.d/httpd里拷的一段 case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) stop start ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1 esac -------------------- 例:sshd的脚本 #!/bin/bash case "$1" in start) #启动sshd服务 pid=`pidof sshd` if [ -z $pid ]; then /usr/sbin/sshd echo "正在启动 sshd: [确定]" else echo "服务sshd(pid $pid)已存在。" fi ;; stop) #停止sshd服务 pid=`pidof sshd` if [ -z $pid ]; then echo "服务sshd 已停" else killall sshd &> /dev/null echo "停止 sshd: [确定]" fi ;; restart) #重新启动 pid=`pidof sshd` if [ -z $pid ]; then echo "停止 sshd:[失败]" /usr/sbin/sshd echo "正在启动 sshd:[确定]" else echo "停止 sshd:[确定]" /usr/sbin/sshd echo "正在启动 sshd:[确定]" fi ;; status) #查看状态 pid=`pidof sshd` if [ -z $pid ]; then echo "服务sshd 已停" else echo "服务sshd (pid $pid)正在运行..." fi ;; *) #如果参数不是start|stop|restart|status时,则提示 echo "用法:/root/ssh1.sh {start|stop|restart|status}" esac 例: 写一个shell脚本,传入一个参数(字母),判断传入的字母是大小还是小写 #!/bin/bash case "$1" in [A-Z] ) echo "大写" ;; [a-z] ) echo "小写" ;; * ) echo "不是字母" exit 1 esac ----------------------------------- #!/bin/bash if [[ "$1" =~ [A-Z] ]];then -- ~符号是匹配的意思 echo "大写" elif [[ "$1" =~ [a-z] ]];then echo "小写" else echo "不是字母" fi 2. select select表达式是一种bash的扩展应用,从ksh引进。 2.1 语法 PS3="prompt" --使用PS3来输出提示信息 select var in choice1 choice2 choice3 ... do echo "................." done 2.2 用select做一个选择菜单 #!/bin/bash PS3="请选择你使用的手机类型" select phone in xiaomi huawei iphone samsung lenovo oppo meizu do case "$phone" in iphone ) echo "你使用的是$phone" echo "苹果ios系统" break ;; * ) echo "你使用的是$phone" echo "安卓系统" break ;; esac done