Linux学习之二十二(case语句及脚本选项)
来源:互联网 发布:嘻游网络加速器 编辑:程序博客网 时间:2024/06/16 21:55
脚本编程 case语句及脚本选项
编程分类:
面向过程:
控制结构
顺序结构
选择结构
循环结构
选择结构:
1、if:单分支、双分支、多分支
单分支:if CONDITION; then
statement
....
fi
双分支:if CONDITION; then
statement
...
else
statement
...
fi
多分支:if CONDITION1; then
statement
...
elif CONDITION2; then
statement
...
else
statement
...
fi
2、case语句:选择结构
case SWITCH in
value1)
statement
...
;;
value2)
statement
...
;;
*)
statement
...
;;
esac
例1:写一个脚本,输入一个字母,如果是a-z,显示是小写字母,如果是A-Z,显示是大写字母,如果是其他,显示是特殊字符。
#!/bin/bash
#
case $1 in
[0-9])
echo "A digit.";;
[a-z])
echo "Lower.";;
[A-Z])
echo "Upper.";;
*)
echo "Special character.";;
esac
例2:只接受参数start、stop、restart、status其中之一
#!/bin/bash
#
case $1 in
'start')
echo "start server...";;
'stop')
echo "stop server...";;
'restart')
echo "Rstarting server...";;
'status')
echo "Running...";;
*)
echo "`basename $0` {start|stop|restart|status}";;
esac
例3:写一个脚本,可以接受选项及参数,而后能获取每一个选项,及选项的参数;并能根据选项及参数做出特定的操作。比如:
adminusers.sh --add tom,jerry --del tom,blair -v|--verbose -h|--help
#!/bin/bash
#
DEBUG=0
ADD=0
DEL=0
for I in ` seq 0 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-v|--verbose)
DEBUG=1
shift ;;
-h|--help)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 0
;;
--add)
ADD=1
ADDUSERS=$2
shift 2
;;
--del)
DEL=1
ADDUSERS=$2
shift 2
;;
*)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 7
;;
esac
fi
done
if [ $ADD -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
[ $DEBUG -eq 1 ] && echo "$USER exists."
else
useradd $USER
[ $DEBUG -eq 1 ] && echo "Add user $USER finished."
fi
done
fi
if [ $DEL -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
userdel -r $USER
[ $DEBUG -eq 1 ] && echo "Delete $USER finished."
else
[ $DEBUG -eq 1 ] && echo "$USER not exist."
fi
done
fi
例4:写一个脚本showlogged.sh,其用法格式为:
showlogged.sh -v -c -h|--help
其中,-h选项只能单独使用,用于显示帮助信息:-c选项时,显示当前系统上登录的所有用户数;如果同时使用了-v选项(不允许单独使用),
则既显示同时登录的用户数,又显示登录的用户的相关信息:如
Logged users:4. #"4"为当前登录的用户数量
They are:
root pts/1 2017-05-07 10:39 (192.168.100.102)
#!/bin/bash
#
declare -i SHOWNUM=0
declare -i SHOWUSERS=0
for I in `seq 1 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-h|--help)
echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose."
;;
-c|--count)
let SHOWNUM=1
shift ;;
-v|--verbose)
let SHOWUSERS=1
shift ;;
*)
echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose."
exit 8 ;;
esac
fi
done
if [ $SHOWNUM -eq 1 ]; then
echo "Logged users: `who | wc -l`."
if [ $SHOWUSERS -eq 1 ]; then
echo "They are:"
who
fi
fi
编程分类:
面向过程:
控制结构
顺序结构
选择结构
循环结构
选择结构:
1、if:单分支、双分支、多分支
单分支:if CONDITION; then
statement
....
fi
双分支:if CONDITION; then
statement
...
else
statement
...
fi
多分支:if CONDITION1; then
statement
...
elif CONDITION2; then
statement
...
else
statement
...
fi
2、case语句:选择结构
case SWITCH in
value1)
statement
...
;;
value2)
statement
...
;;
*)
statement
...
;;
esac
例1:写一个脚本,输入一个字母,如果是a-z,显示是小写字母,如果是A-Z,显示是大写字母,如果是其他,显示是特殊字符。
#!/bin/bash
#
case $1 in
[0-9])
echo "A digit.";;
[a-z])
echo "Lower.";;
[A-Z])
echo "Upper.";;
*)
echo "Special character.";;
esac
例2:只接受参数start、stop、restart、status其中之一
#!/bin/bash
#
case $1 in
'start')
echo "start server...";;
'stop')
echo "stop server...";;
'restart')
echo "Rstarting server...";;
'status')
echo "Running...";;
*)
echo "`basename $0` {start|stop|restart|status}";;
esac
例3:写一个脚本,可以接受选项及参数,而后能获取每一个选项,及选项的参数;并能根据选项及参数做出特定的操作。比如:
adminusers.sh --add tom,jerry --del tom,blair -v|--verbose -h|--help
#!/bin/bash
#
DEBUG=0
ADD=0
DEL=0
for I in ` seq 0 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-v|--verbose)
DEBUG=1
shift ;;
-h|--help)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 0
;;
--add)
ADD=1
ADDUSERS=$2
shift 2
;;
--del)
DEL=1
ADDUSERS=$2
shift 2
;;
*)
echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
exit 7
;;
esac
fi
done
if [ $ADD -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
[ $DEBUG -eq 1 ] && echo "$USER exists."
else
useradd $USER
[ $DEBUG -eq 1 ] && echo "Add user $USER finished."
fi
done
fi
if [ $DEL -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do
if id $USER &> /dev/null; then
userdel -r $USER
[ $DEBUG -eq 1 ] && echo "Delete $USER finished."
else
[ $DEBUG -eq 1 ] && echo "$USER not exist."
fi
done
fi
例4:写一个脚本showlogged.sh,其用法格式为:
showlogged.sh -v -c -h|--help
其中,-h选项只能单独使用,用于显示帮助信息:-c选项时,显示当前系统上登录的所有用户数;如果同时使用了-v选项(不允许单独使用),
则既显示同时登录的用户数,又显示登录的用户的相关信息:如
Logged users:4. #"4"为当前登录的用户数量
They are:
root pts/1 2017-05-07 10:39 (192.168.100.102)
#!/bin/bash
#
declare -i SHOWNUM=0
declare -i SHOWUSERS=0
for I in `seq 1 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-h|--help)
echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose."
;;
-c|--count)
let SHOWNUM=1
shift ;;
-v|--verbose)
let SHOWUSERS=1
shift ;;
*)
echo "Usage: `basename $0` -h|--help -c|--count -v|--verbose."
exit 8 ;;
esac
fi
done
if [ $SHOWNUM -eq 1 ]; then
echo "Logged users: `who | wc -l`."
if [ $SHOWUSERS -eq 1 ]; then
echo "They are:"
who
fi
fi
0 0
- Linux学习之二十二(case语句及脚本选项)
- bash脚本编程之case语句及脚本选项进阶
- shell学习二十二--case语句
- Linux学习之case语句
- shell学习二十三--case语句编写mysql启动脚本
- Linux学习笔记(十二、选项帮助)
- shell脚本之case语句
- Linux-shell脚本-if语句/case语句
- linux学习之旅(二十二)&CIFS网络文件系统
- java学习二十二 java条件语句之switch
- Linux学习之十二bash脚本之变量、变量类型
- Linux学习笔记(二十二)
- Linux学习(二十二)网络编程
- shell脚本之条件语句if和分支语句case...esac【shell脚本的学习笔记三】
- shell学习二十八天----case语句
- Java基础---Java循环语句之while(二十二)
- linux学习之二十二---进程间通信共享内存
- linux学习之二十二---命令行参数分析
- 吝啬的国度
- java——File类文件操作全解
- scrollview的属性解释
- Opencv中waiitKey的作用
- DEDECMS自定义表单发送到邮箱
- Linux学习之二十二(case语句及脚本选项)
- "分布式事务"解决方案汇总 -- 2PC/TCC/事务消息/1PC
- 如何正确使用C++多重继承
- json数据和字符串互转
- 设计模式
- 添加常用的地图辅助控件
- 面和顶点法向量
- 重新设置ubuntu登录密码
- Android -- Wifi的save()操作