shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。shell编程语言具有普通编程语言的很多特定,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的结果
shell和python都是弱语言
定义变量规则 :变量名=值
区分单引号和双引号的不同和相同点
脚本名称使用.sh结尾
第一行必须写 #!/bin/bash
输入语句用read
输出语句用: echo
调用的时候
./脚本名.sh(权限的问题)
sh 脚本名.sh
注意点:read可以传递多个数据
read -p "input name and password:" name password
参数传参
向.sh文件中传递数据
格式: sh 脚本名.sh 参数
$1:接收第一个参数~~~~$n
$n:文件名称
$@:所有参数s
$#参数格式
比较运算符(数字)
-eq 比较是否相等
-ne 比较不相等
-gt 比较大于
-ge 比较大于等于
-lt 比较小于
-le 小于等于
字符串判断:==,!=
逻辑运算符 -a与 -o或 !非
((i++)) ((i+=1))
s=$(($s+$i)) s=$[$s+$i] ((s=$s+$i))
格式:
if [条件] then 语句 else 语句 fi
注意点:
if [ 条件 ] then 语句 elif [ 条件 ] then 语句 ...... else 语句 fi
case规则 case $变量名 in "值") 语句;; "值") 语句;; ..... esac
注意:
for 变量 in 列表 do 语句 done
如果列表中的元素过多的时候,需要怎么做?
seq mix step max
注意:mix开始数据 step :间隔 max结束数据,如果step为1,可以忽略
结束标志done
while [ 条件 ] do 语句 done
注意:结束done
while后有空格,参数之间也注意
定义格式 函数名(){代码} 调用格式 函数名
注意点:必须先定义一个函数,然后再调用它
函数中的参数 使用$n来接收数据
shell中函数默认存在返回值
查看函数的返回值$?
注意点:
如果没有代码错误默认返回值为0
有代码错误返回1
查看返回值内容:$?
练习1:使用shell脚本,输出当前所在的目录
#!/bin/bash dir=`pwd` echo $dir
练习2:计算/etc目录下有多少个文件,用shell脚本实现
#!/bin/bash cd /etc filenum=`ls|wc -l` echo $filenum
实现统计任何指定目录下的文件个数
#!/bin/bash read dir cd $dir filenum=`ls|wc -l` echo $filenum
判断用户输入的用户名和密码是否为admin 123456,如果是则提示登录成功,否则提示失败
#!/bin/bash read -p "输入用户和密码:" name password if [ "$name" == "lucky" -a "$password" == "123456" ] then echo "登录成功" else echo "失败" fi
输入数字,判断是否大于0,如果大于0则将该数字-1并输出,否则+1输出
#!/bin/bash read -p "输入数字" num if [ "$num" -gt 0 ];then ((num--)) echo $num else ((num++)) echo $num fi
判断用户输入的目录是否存在,如果存在则统计目录下的文件个数,否则提示用户该目录不存在
#!/bin/bash read -p "输入目录名称:" dirname if test -d "$dirname" then cd $dirname filename=`ls|wc -l` echo $filename else echo "目录不存在" fi
if [ 条件 ] then 语句 elif [ 条件 ] then 语句 else 语句 fi
判断学生的成绩,80<score<=100提示优秀,60<score<=80提示良好,其他则提示不及格
#!/bin/bash read -p "输入成绩:" score if [ "$score" -gt 80 -a "$score" -le 100 ] then echo "优秀" elif [ "$score" -gt 60 -a "$score" -le 80 ] then echo "一般" else echo "不及格" fi
判断用户输入的内容是否为空,为空则提示,不为空则判断是否为目录,不为目录则判断是否为文件,否则提示错误信息
#!/bin/bash read -p "请输入:" a if [ -z "$a" ] then echo "为空" elif [ -d "$a" ] then echo "为目录" elif [ -f "$a" ] then echo "为文件" else echo "出错" fi
输入一个序号,判断该用户选择哪款产品,A:笔记本 B:电饭煲 C:小台灯
#!/bin/bash read -p "输入产品" pro case $pro in "A") echo "笔记本";; "B") echo "电饭煲";; "C") echo "小台灯";; esac
请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意
#/bin/bash read -p "评价:" pj case $pj in [0-3]) echo "不满意";; [4-6]) echo "满意";; [7-9]) echo "非常满意" esac
输出1-6之间的数
#!/bin/bash for i in 1 2 3 4 5 6 do echo $i done
for 变量名 in 列表 do 语句 done
求1-100之间的和
#!/bin/bash i=1 sum=0 while [ "$i" -le 100 ] do sum=$((sum+$i)) ((i++)) done echo $sum