Shell 脚本基础操作

目录

一、脚本操作常用概念

1.1  重定向

 1.2 管道符

 二、变量

 2.1 定义变量  调用变量

 2.2 read -p  交互方式定义变量

 2.3 变量的作用范围

2.4 变量的运算

2.4.1 expr

2.4.2 let

 ​编辑

 2.4.3 其他

2.5 位置变量

 2.6 预定义变量

 三、 条件/判断

3.1 条件判断

 3.2 比较整数数值

3.3 字符串比较

3.4 双中括号

 四、if条件判断

 4.1 分支结构

4.1.2 单分支

 4.1.2 双分支

五、case

六、循环语句

6.1 for

6.2 while 和 until


一、脚本操作常用概念

1.1  重定向

交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据

  • 标准输出:通过该设备向用户输出数据

  • 标准错误:通过该设备报告执行出错信息

重定向的意思就是 ,不通过标准输出到屏幕上,输出到你指定的位置

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出1>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>标准错误输出结果追加到指定的文件尾部
混合输出&>无论对错都可以重定向将标准输出、标准错误的内容保存到同一个文件中

 例:

 1.2 管道符

管道符  |

将左侧的命令输出结果,作为右侧命令的输入(处理对象)可以 叠加使用

例:

 二、变量

 2.1 定义变量  调用变量

编写脚本:

 2.2 read -p  交互方式定义变量

  格式 read -p "提示"  变量名

 

 2.3 变量的作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用。

可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所子shell环境中可以继续使用

 

 

        删除全局变量

2.4 变量的运算

ps:变量在一般情况下只能进行整数运算

2.4.1 expr

expr只能进行整数的运算

格式: expr 变量1 运算符 变量2 [运算符 变量3]

运算符:

加法 +                        减法 -

乘法 \ *                       除法 /

取余 (取模)%

例:

 

2.4.2 let

 

 2.4.3 其他

2.5 位置变量

 跟在脚本后面的变量 如 $1 $2 .......$n

 2.6 预定义变量

 

  • $*:表示所有位置参数的内容看成一个整体返回 返回所有

  • $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有

  • $?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常          ps:if判断常用

  • $#:表示命令行中位置参数的总个数

  • $0:表示当前执行的脚本或程序的名称 当前脚本的名字

  • $$:当前进程id

  • $!: 后台任务最后一个id

 三、 条件/判断

3.1 条件判断

格式1:test  条件表达式
格式2:[  条件表达式  ]
注意[]空格,否则会失败
测试 是否成功使用 $?  返回值
[ 操作符 文件或目录 ]
help test

操作符:
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-a:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-L: 测试是否为软连接文件

属性测试补充:
-s FILE #是否存在且非空
-t fd #fd 文件描述符是否在某终端已经打开
-N FILE #文件自从上一次被读取之后是否被修改过
-O FILE #当前有效用户是否为文件属主
-G FILE #当前有效用户是否为文件属组

条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成

测试过程,实现评估布尔声明,以便用在条件性环境下进行执行

若真,则状态码变量 $? 返回0

若假,则状态码变量 $? 返回1

条件测试命令

 3.2 比较整数数值

[ 整数1 操作符 整数2 ] 公式

  • -eq:第一个数等于(Equal)第二个数

  • -ne:第一个数不等于(Not Equal)第二个数

  • -gt:第一个数大于(Greater Than)第二个数

  • -lt:第一个数小于(Lesser Than)第二个数

  • -le:第一个数小于或等于(Lesser or Equal)第二个数

  • -ge:第一个数大于或等于(Greater or Equal)第二个数

3.3 字符串比较

常用的测试操作符

  • =:字符串内容相同

  • !=:字符串内容不同,! 号表示相反的意思

  • -z:字符串内容为空

  • -n: 字符是否存在

格式

[ 字符串1 = 字符串2 ] 是否相同

[ 字符串1 != 字符串2 ] 是否不相同

[ -z 字符串 ] 是否为空

[ -n 字符串 ] 字符是否存在

3.4 双中括号

[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
 注意:此表达式用于[[ ]]中,PATTERN为通配符
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
 注意: 此表达式用于[[ ]]中;扩展的正则表达式

例子:

[root@gz09 ~]#FILE=test.log
[root@gz09 ~]#[[ "$FILE" == *.log ]]
[root@gz09 ~]#echo $?
0
[root@gz09 ~]#FILE=test.txt
[root@gz09 ~]#[[ "$FILE" == *.log ]]
[root@gz09 ~]#echo $?
1
[root@gz09 ~]#[[ "$FILE" != *.log ]]
[root@gz09 ~]#echo $?
0

 四、if条件判断

 4.1 分支结构

4.1.2 单分支

例: 

 4.1.2 双分支

例:

五、case

格式 case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac 

六、循环语句

6.1 for

累加求和举例 从1加到100

例:第一种格式  类c格式

例2:第二种格式

6.2 while 和 until

区别

while
当命令判断为假时停止

until
当命令判断为真时停止

 

 例: while 累加求和

 

 例2: until 猜数字大小

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值