
第六篇 Shell 编程学习小结
shell 是用于侦听用户输入指令的工具,其接受到这些指令,然后执行相应的操作;shell是一种计算语言,主要用于脚本维护。

我们可以通过以下方式查看当前PC支持的shell
1 | [root@localhost test]# ls /bin/*sh |
查看当前系统所使用shell
1 | [root@localhost test]# echo $SHELL |
shell 开发流程
创建shell脚本文件
1 | touch 01_hello.sh |
打开脚本文件
1 | vim 01_hello.sh |
实现
1 | #!/bin/bash //表示以下所有的所有的指令都通过bash来解析 |
指定可执行权限
1 | chmod 755 01_hello.sh |
执行
1 | ./01_hello.sh |
shell 环境
shell的变量是没有类型的,但是有环境变量和局部变量之分
环境变量
即全局变量,可以被当前shell或者子shell访问;
查看环境变量
env
定义环境变量
export a=hello
访问变量值
${variable_name}
局部变量
局部变量只能被当前的shell所访问
查看局部变量
set
定义局部变量
b=123
访问变量
${variable_name}
算术运算符
+ - * / %
format
$[$variable_name + $variable_name]
shell 语句格式
输出语句
format
echo [option] "hello"
option
- -n : 表示不换行
输入语句
format
read [option] variable_name
option
- -p : 表示显示提示信息
- -s : 表示以非显式方式接受输入
- -n : 表示指定接受字符个数
- -t : 表示超时时间(秒)
if 语句
format
1 | if [ condition ] |
嵌套
1 | if [ condition ] |
配合其它命令
format
1 | if cmd |
example
1 | if mount 192.168.0.254:/example &> /dev/null |
case 语句
format
1 | case $variablename in |
运算
关系运算符
| - | 数学表示 | shell格式 | ||
|---|---|---|---|---|
| 大于 | > | -gt | ||
| 小于 | < | -lt | ||
| 等于 | = | -eq | ||
| 大于等于 | >= | -ge | ||
| 小于等于 | <= | -le | ||
| ### 逻辑运算符 | ||||
| - | 格式一 | 格式二 | ||
| — | — | — | ||
| 与 | && | -a | ||
| 或 | || | -o | ||
| 非 | ! | |||
| #### format | ||||
|
||||
| ### 数学计算格式 | ||||
$[$var1 * $var2 + 1] |
字符串比较
| 格式 | 意义 |
|---|---|
| -n STRING | 判断字符串是非空 |
| -z STRING | 判断字符串为空 |
| STRING1 = STRING2 | 判断相等 |
| STRING1 != STRING2 | 判断不等 |
for 循环
format
for循环主要有以下两种格式
一种是C语言式的for循环
1 | for ((i = 0; i < 100; ++i)) |
还有一种是for_in式的
1 | for varname in `seq 1 1 100` //第一个1是初始值,第二个1是步进值,第三个是终值 |
while 循环
format
1 | i = 0 //初始化 |
死循环
死循环要配合延迟函数和退出条件使用
sleep
用于表示延迟以秒为单位的时间
usleep
用于表示延迟以微秒为单位的时间
break
退出整个循环,只在当前循环中起作用,不可以跨层退出
continue
跳过本次循环,进入下次循环,只对当前循环起作用,不可以深层退出
函数
format
1 | function funname() |
1 | funname() |
- end
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自COMBER'S BLOG




