【摘要】 介绍Linux下Shell编程,介绍shell里语句、变量、函数、运算符的使用。
Linux下常用的脚本语言。
变量、数组、for、while、函数、运算符、if、……..
[root@wbyq /]# ls /bin/sh -l lrwxrwxrwx. 1 root root 4 12月 27 2016 /bin/sh -> bash |
变量定义使用
#!/bin/bash ABC=12345 echo "ABC=$ABC" echo "ABC=${ABC}" |
Shell脚本传递参数 类似于C语言的argv argc
#!/bin/bash echo "cnt=$#" echo "[0]=$0" echo "[1]=$1" echo "[2]=$2" echo "[3]=$3" |
if语句语法规则
#!/bin/bash a=10 b=20 if [ ${a} -eq ${b} ] #判断两个数是否相等,也可以使用 == then echo "123" else echo "456" fi #!/bin/bash if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then echo "条件为真" else echo "条件为假" fi #一个[]表示一个完整的表达式 #-a表示与 -o表示或 只能用于单个表达式之内 #多个表达式之间可以使用&&和 || 嵌套连接 #!/bin/bash #嵌套if语句示例 if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then echo "条件为真" else echo "条件为假" fi else if [ 100 == 120 -o 50 != 40 ] && [ 100 == 200 ] then echo "条件为真" else echo "条件为假" fi fi |
计算字符串长度
#!/bin/bash string="abcd" echo ${#string} #输出 4 |
数组语法
#!/bin/bash buff=(1 2 3 4 5 6 7 8 9) buff[0]=88 buff[1]=99 buff[100]=100 buff[88]=55 echo "buff[0]=${buff[0]}" echo "buff[1]=${buff[1]}" echo "buff[2]=${buff[2]}" echo "buff[100]=${buff[100]}" |
echo用法示例
#!/bin/bash DATA=12345 echo "DATA=${DATA}" |
printf语句格式
#!/bin/bash printf "%d\n" 1234 printf "%s\n" "45678" |
从键盘上读取数据
#!/bin/bash echo -n "输入数据:" #参数-n 的作用是不换行, echo 默认是换行 read data #从键盘输入 echo "你输入的数据为: $data" #显示信息 |
Case多分支选择语句
#!/bin/bash echo "输入一个 1 到 4 之间的数字" read aNum case ${aNum} in 1) echo "你选择 1" ;; 2) echo "你选择 2" ;; 3) echo "你选择 3" ;; 4) echo "你选择 4" ;; 5) echo "你选择 4" ;; *) echo "你不选择一个数字不在 1 到 4 之间" ;; esac |
for循环
(1)基本用法 #!/bin/bash for loop in 1 2 3 4 5 6 7 8 9 do echo "loop=${loop}" done (2) 嵌套示例 #!/bin/bash for loop in 1 2 3 do for loop in 1 2 3 do echo "loop=${loop}" done done (3)输出位置路径 #!/bin/bash for loop in /test/*.sh do echo "file_name=${loop}" done |
break关键字
#!/bin/bash for loop in 1 2 3 do for loop in 1 2 3 do echo "loop=${loop}" break 2 #break后面可以加参数,选择跳出的循环层次 done done |
while循环示例
(1)示例1 #!/bin/bash while : #无限循环条件 do sleep 1 #休眠1秒钟 echo "123" break 1 #跳出指定层次的循环 done (2)示例2 #!/bin/bash COUNTER=0 while [ ${COUNTER} -lt 5 ] do COUNTER=`expr ${COUNTER} + 1` echo "COUNTER=${COUNTER}" done COUNTER=0 while [ ${COUNTER} != 5 ] do COUNTER=`expr ${COUNTER} + 1` echo "COUNTER=${COUNTER}" done (2)示例3 #!/bin/bash while read DATA do echo "DATA=${DATA}" done (3)示例4 #!/bin/bash while read DATA do echo "DATA=${DATA}" continue #跳出当前这一次循环 echo "1234556" done |
函数
(1) 基本示例 #!/bin/bash #函数的编写格式 func() { echo "函数调用调用成功!" } func #调用函数不需要加() (2) 嵌套调用 #!/bin/bash #函数的编写格式 func1() { func2 } func2() { echo "函数调用调用成功!" } func1 #调用函数不需要加() (3) 函数的返回值 #!/bin/bash #函数的编写格式 func() { return 255 #最大范围是255 } func #调用函数不需要加 echo $? (4) 函数的形参 #!/bin/bash #函数的编写格式 func() { echo "$1" echo "$2" echo "$3" echo "$4" return 255 #函数返回值只能是整数,最好不要返回路径。 } func 123 456 789 dfvbfdjvbgdf echo $? |
调用外部脚本
#!/bin/bash . 123.sh source 123.sh echo "a=${a}" echo "b=${b}" echo "c=${c}" |
Shell脚本练习
1. 从键盘上输入年份,判断平年闰年。
#!/bin/bash
echo -n "请输入年份:" # -n 不换行
read year #从键盘上读取年份
#能被400整除 ,能被4整除不能被100整除
if [ `expr $year % 400` == 0 ] || [ `expr $year % 4` == 0 -a `expr $year % 100` != 0 ]
then
echo "$year是闰年"
else
echo "$year是平年"
fi
2. 输出9*9乘法口诀表。
3. 冒泡排序。
4. 使用函数封装判断平年闰年
5. 输出所有水仙花数(个位+十位+百位的立方和=本身)例如: 1*1*1+2*2*2+3*3*3=123
6. 判断100~200之间所有的素数
7. 写一个脚本
(1). 切换工作目录至指定目录
(2). 依次向指定目录中的每个文件或子目录问好,形如:
(提示:for FILE in /var/*;或for FILE in `ls /var`;)
Hello,log
(3).统计/var目录下共有多个文件,并显示出来
8. 写一个脚本, 通过ping命令测试192.168.x.0到192.168.x.254之间的所有主机是否在线
如果在线,就显示“在线”
如果不在线,就显示“离线”
注意:ping -c1 -w1 中-c1是指ping的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒
9. 模拟linnux登录shell
就是输入用户名密码判断是否正确。
10. 查找指定目录下最大的文件,然后输出
11. 将指定目录下的所有指定后缀文件,按照统一的方式命名。
全部0条评论
快来发表一下你的评论吧 !