目录
一、概述
二、shell
(一)shell命令解释环境
(二)类型
(三)查看系统中支持的shell:cat /etc/shells
(四)查看系统默认shell: echo $SHELL
三、变量
(一)变量组成
1、变量名
2、变量值
(二)变量类型
1、系统内置变量(环境变量)
2、自定义变量
(三)位置变量(脚本后参数所在的位置)
(四)预定义变量
(五)作用域
四、运算符——数学运算
(一)数学运算符
(二)运算方法
(三)字符串运算
(四)$((a+b)) echo $((a+b))
(五)$[a+b] echo $[a+b]
五、运算符——比较运算
(一)条件测试
1、test var1 比较符 var2
2、[ var1 比较符 var2 ]
3、举例
4、&&
5、||
6、;编辑
7、举例
(二)数值比较
(三)字符串比较
(四)文件比较
(五)逻辑运算符
六、shell脚本编写规范
七、shell运行规则
(一)没有x权限
(二)有x权限
八、shell脚本运行追踪: bash -x 脚本所在路径/脚本文件
九、返回100内随机数
编辑十、返回1到10 的连续数字
(一)echo {1..10}
(二) seq 1 10
(三)返回1.1 2.1 3.1.... 10.1
十一、读取键盘输入并赋值给变量名
十二、语句——条件语句
(一)单分支if
(二)双分支if
(三)多分支if
十三、语句——循环语句
(一)for
1、格式
2、for循环由while循环演变
3、举例:
(二)while
1、格式
2、举例:
(三)开关语句——case
脚本就是将手动一次性执行的命令进行规范且自动化
1、sh
2、ash
3、bsh
4、csh
5、bash
6、tcsh(国产默认)
7、dsh(苹果默认)
8、zsh
①不会变化(容器...)
②声明规范
不能是数字或数字开头
以_或字母开头
变量名中不能包含特殊字符
③声明方法
驼峰式:userName
双驼峰:UserName
shell写法:
user_name
username
USERNAME
①不断变化
② 数字、字符
查看环境变量:env
①varName=varValue
#等号两边不能有空格
②数字
var1=1
③字符串
#shell中可以不使用引号
#当包含有空格时,需要使用引号
共有九个,分别是:$1、$2、$3、$4、$5、$6、$7、$8、$9
①$0:脚本本身的名称
②$#:脚本后参数的个数
③$*:脚本运行时参数的内容(整体输出)
④$@: 脚本运行时参数的内容(逐个输出)
⑤$?:脚本运行完毕后的返回值
默认情况: 0 成功
非0 失败
①默认变量只在当前shell下生效
②若要在当前及其子shell下生效,需要声明为全局变量
export
1、+ 相加
2、- 相减
3、* 相乘
4、/ 相除
5、% 取余
1、expr
①expr $a + $b
②相加或相减
expr 10 + 5 # 输出 15
expr 10 - 5 # 输出 5
③相乘或相除
expr 10 \* 5 # 输出 50
#在进行相乘或者进行乘法的时候需要使用 \* 转义符,因为 * 本身在shell中表示通配符。
①expr length "mystring" # 输出字符串长度:8
②expr substr "mystring" 2 3 # 输出字符串子串:yst
③expr index "mystring" r # 输出字符所在位置:4
#注意:shell不支持浮点数的显示
#echo 自带换行 #echo -n 取消换行
[ $a -ne $b ] && echo OK
条件 && 输出结果
条件为真输出,否则不输出
[ $a -ne $b ] || echo OK
条件 || 输出结果
条件为假输出,否则不输出
1、-eq 等于
2、-ne 不等于
3、-lt 小于
4、-le 小于等于
5、-gt 大于
6、-ge 大于等于
1、= 字符串一致
2、!= 字符串不一致
3、-z 字符串为空
4、! -z 字符串不为空
1、-e 文件或目录是否存在
2、-d 是否为目录
3、-f 是否为文件
4、-r 判断文件是否可读
5、-w 判断文件是否可写
6、-x 判断文件是否可执行
1、&& -a
表示并且,有假则假,全真为真
举例:[ -r 111 -a -w 111 -a -x 111 ]
[ -r 111 ] && [ -w 111 ] && [ -x 111 ]
2、|| -o
表示 或者,有真则真,全假为假
3、!
表示取反,有真则假,有假则真
第一行 #!/bin/bash
第二行 #脚本的说明
第三行 脚本正文
1、bash 脚本所在路径/脚本文件
2、source 脚本所在路径/脚本文件
3、. 脚本所在路径/脚本文件
1、./脚本文件
2、脚本绝对路径/脚本文件
命令:echo $[$RANDOM%100]
seq 1.1 10.1
命令:read -p "提示语" 变量名
for 条件(i in 值)|((i=1;i<=10;i++))
do
语句
done
举例:
if [ ];then
else
fi
举例:
if [ ];then
elif [ ];then
else
fi
举例:
for 条件(i in 值)|((i=1;i<=10;i++))
do
语句
done
创建多个用户
删除多个有规律的用户
九九乘法表
详见http://t.csdn.cn/KmbeB
i=1
while 条件
do
语句
let i++
done
剪子包袱锤
猜大小
详见http://t.csdn.cn/KmbeB
case $1 in
条件1)
语句
;;
条件2)
语句
;;
*)
帮助信息
;;
esac