shell
一、解释器
解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行
#!/bin/bash(默认),指定解释器。例如:
#!/bin/bash
echo ‘hello, shell'二、变量
shell的变量不需要先声明,可以直接使用,eg:a=15
调用变量:
$?, 判断上一条命令是否成功,0表示成功,其它表示不成功
$0,返回脚本的文件名称
$1-$9,返回对应的参数值
$*,返回所有的参数值是什么
$#,返回参数的个数和
这个很难记,还是得用起来的时候查查
#!/bin/bash
echo "脚本名称:$0"echo "第一个参数是:$1"echo "第二个参数是:$2"echo "一共有多少参数:$#"echo "这些参数是:$*"
三、常用符号
> ,会覆盖原有的内容
>> ,不会覆盖原有的内容
; ,分号,执行多条命令,cat 1.txt; ls
| ,管道符,ps –ef | grep xxx
&& ,前面的命令执行成功,后面的才可以执行
|| ,前面的命令执行失败,后面的才可以执行
“” ,双引号中的变量输出变量值
‘’ ,单引号中的变量输出本身
`` ,输出命令结果 eg:a=`date`;echo $a

四、整数运算符
加减乘除余
以加示例:
expr 1 + 2
echo $[1 + 2]
echo $((1 + 2))
注意: expr加号两边要有空格,a=1;b=2;expr $a + $b; echo $[a+b]; echo $((a+b))
五、小数
bc计算器
保留多少位小数可以通过scale,例如:echo "scale=2;3/2" | bc
结果为:1.50
六、条件判断
文件目录
语法:[ 判断表达式 ],注意,[]内部左右要有空格
-e 目标是否存在
例如:[ -e test.sh ] || touch test.sh
-d 是否为路径
例如:[ -d /root/test ] && echo "/root/test存在"
-f 是否为文件
例如:[ -f test.sh ] && echo "是文件"
权限
-r 是否有读取权限
-w 是否有写入权限
-x 是否有执行权限
[ -x test.txt ] && echo '有执行权限'
字符串
[ `echo '1.2 < 2.1' | bc` -eq 1 ] && echo '小于'
结果是:小于
if语句
#!/bin/bash
if [ $1 -eq $2 ]thenecho "$1 等于 $2"elseecho "$1 不等于 $2"fi#!/bin/bash
read -p "请输入你的分数:" scoreif [ -z $score ];thenecho "你还没有输入分数"exitfiif [ $score -ge 0 ] 2> /dev/null && [ $score -lt 60 ];thenecho "差"elif [ $score -lt 80 ] 2> /dev/null;thenecho "中"elif [ $score -lt 90 ] 2> /dev/null;thenecho "良"elif [ $score -lt 101 ] 2> /dev/null;thenecho "优"elseecho "分数值为0~100之间"fi注释:[ -z STRING ] “STRING” 的长度为零则为真。
2> /dev/null;then,下面判断报错的时候输出到屏幕
case语句
case的语法:
case 变量 in
值1 )执行动作1;;值2 )执行动作2;;....esac#!/bin/bash
echo '请输入性别:'read sexcase $sex in'男')echo '帅哥';;'女')echo '美女';;* )echo '输入有误请重新输入';;esacfor语句
例如:打印1-10这10个数字之和
#!/bin/bash
sum=0for ((i=1;i<11;i++))dosum=$(($sum + $i))doneecho $sumwhile语句
例如:打印1-10这10个数字之和
#!/bin/bash
#打印1-10这10个数字之和sum=0n=1while [ $n -lt 11 ];dosum=$(( $sum + $n ))n=$(( $n + 1 ))doneecho $sum输入输出
read -参数
-p:给出提示符,不支持"\n"换行
-s:隐藏输入的内容
-t:给出等待的时间,超时会退出read
#!/bin/bash
read -p "请输入密码:" passecho '你输入的密码是:'$pass字体特效
字体色30-37:
echo -e "\033[31m 红色字 \033[0m”
背景色40-47:
echo -e "\033[47;34m 白底蓝字 \033[0m"
特效
echo -e "\033[1m 高亮度 \033[0m"
echo -e "\033[4m 下划线 \033[0m"
echo -e "\033[5m 闪烁 \033[0m"

浙公网安备 33010602011771号