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 ]
then
echo
"$1 等于 $2"
else
echo
"$1 不等于 $2"
fi
#!/bin/bash
read
-p
"请输入你的分数:"
score
if
[ -z $score ];
then
echo
"你还没有输入分数"
exit
fi
if
[ $score -
ge
0 ] 2>
/dev/null
&& [ $score -lt 60 ];
then
echo
"差"
elif
[ $score -lt 80 ] 2>
/dev/null
;
then
echo
"中"
elif
[ $score -lt 90 ] 2>
/dev/null
;
then
echo
"良"
elif
[ $score -lt 101 ] 2>
/dev/null
;
then
echo
"优"
else
echo
"分数值为0~100之间"
fi
注释:[ -z STRING ] “STRING” 的长度为零则为真。
2> /dev/null;then,下面判断报错的时候输出到屏幕
case语句
case的语法:
case
变量
in
值1 )
执行动作1
;;
值2 )
执行动作2
;;
....
esac
#!/bin/bash
echo
'请输入性别:'
read
sex
case
$sex
in
'男'
)
echo
'帅哥'
;;
'女'
)
echo
'美女'
;;
* )
echo
'输入有误请重新输入'
;;
esac
for语句
例如:打印1-10这10个数字之和
#!/bin/bash
sum
=0
for
((i=1;i<11;i++))
do
sum
=$(($
sum
+ $i))
done
echo
$
sum
while语句
例如:打印1-10这10个数字之和
#!/bin/bash
#打印1-10这10个数字之和
sum
=0
n=1
while
[ $n -lt 11 ];
do
sum
=$(( $
sum
+ $n ))
n=$(( $n + 1 ))
done
echo
$
sum
输入输出
read -参数
-p:给出提示符,不支持"\n"换行
-s:隐藏输入的内容
-t:给出等待的时间,超时会退出read
#!/bin/bash
read
-p
"请输入密码:"
pass
echo
'你输入的密码是:'
$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"