Linux的shell编程

Linux提供的Shell解析器有:sh,bash,

bash 和sh的关系:sh是bash的软链接

1.定义变量:变量名=“ xx”

变量名称可以由字母,数字和下划线组成,但不能以数字开头,环境变量名建议大写。

注意,等号两侧不能有空格,如果有空格,必须要用‘单引号或者双引号包裹

在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

拿变量值:echo $变量名
2.删除(取消)变量:unset 变量名
3.定义数组:数组名=(“元素1” “元素2”...)

取数组值

单个 echo ${数组名【下标】}

全部 echo ${数组名 【*】}

4.提升变量访问范围:export 变量(全局)
5.正确选择引号:

没有空格,不需要加引号

单引号:不会解析内部变量

双引号:会自动解析内部变量

6.反引号:可以将命令的结果保存至变量中

变量名 = 命令(反引号包裹)

变量名=$(命令)

7.特殊的变量名:
1.$n :n为数字 ,$0代表脚本名称,$1-$9,代表第一到第九个参数,10以上的参数${10},(对应的$n只会拿对应的固定位置参数)
2.$#:获取参数个数,常用于循环
3. $* :这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体,(相当于会把所有参数当作一个字符串)
4.$@:这个变量也代表命令中所有的参数,会把$@把每个参数区分对待,(相当于把所有参数当作数组元素,一样输出)
3.$?:表示查看上一次命令或者脚本的执行状态结果是否正确,如果为0,表示正确,如果非0,表示错误
8.运算符: +,-,"*",/,%(加,减,乘,除,取余)

运算写法:

echo $[运算式] 或者

echo $((运算式))

或者 expr n + n

注意:expr运算符间要有空格,

9.逻辑运算符:格式: [条件] 注意:[] 里面前后必须要有空格

结果:0表示真,非0表示假

1.两个整数之间比较:

=字符串比较

-lt:小于(less than) -le:小于等于(less equal)

-eq:等于(equal) -gt :大于(greater than)

-ge :大于等于(greater equal) -ne:不等于(Not equal)

2.按照文件权限进行判断:

-r:读权限 -w:写

-x:执行

3.按照文件类型进行判断:

-f:普通文件 -e:文件存在 -d:文件存在并是一个目录

4.多条件判断:(&&表示前一条命令执行成功时,才执行后一条命令 ,||表示上一条命令执行失败后,才执行下一条命令)

10.正则表达式:使用单个字符串描述,匹配一系列符合某个语法规则的字符串

^:匹配以什么开头

$:以什么结尾

. :匹配任意字符

*:不单独使用,表示匹配上一个字符的任意次数,

字符区间(中括号):[]

[6,8]:匹配6或8

[0-9] :匹配·1个0-9的数字

[0-9]*:匹配任意长度的数字字符串

[a - z]:匹配1个a-z之间的字符

[a-z]*:匹配任意长度的字母字符串

[a-ce-f]:匹配a-z或者e-f之间的任意一个字符

特殊字符: \

\表示转义,并不会单独使用,当匹配到某一特殊字符本身,就会困难,

例如,输出中含有$,那么必须是 “ \\$ '',或者 ‘\$’

11.扩展的正则表达式:如{n,m},对于这种,grep匹配需要添加 -E选项,

语法格式(if,for,while,case,select,unitl,read,自定义函数)

1.if:(条件选择)

注意事项:1. [ 条件判断式 ] ,中括号和条件判断式之间必须要有空格

2.if 后要有空格

用法格式:

if 判断条件 ;then

条件为真的分支代码

elif 判断条件2 ;then

条件为真的分支代码

else

以上条件都为假的分支代码

fi

2.case:(条件判断)

case $name in

PART1)

cmd

;;

PART2)

cmd

;;

*)

cmd

;;

esac

注意事项:

1.case行尾必须为单词in,每个模式匹配必须以右括号“)”结束

2.双份号“;;”表示命令序列结束,相当于java的break

3.最后的“*)”表示默认模式,相当于java的default

3.for:(循环)

用法格式:

方式一:

for name in 列表 ;do

循环体

done

方式二:

for ((初始值;条件表达式,变量改变));do

cmd

done

此处常用$* 和 $@

注意区别,$@会将所有参数当作数组元素,$*会将所有参数当作1个字符串

#####

4.while:

用法格式:

while 循环控制条件 ;do

循环

done

循环控制条件;进入循环之前先做一次判断,每一次循环之后再次做判断,条件为true,则执行,知道false

5.unitl:

用法格式:

unitl 循环体 ;do

循环

done

进入条件:循环为true,退出条件,循环条件为false,刚好和while相反,不常用

6.select:

select variable in list

do

循环体命令

done

7.read:read(选项)(参数)

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒)。

参数

变量:指定读取值的变量名

8.自定义函数:

[ function ] funname[()]

{

Action;

[return int;]

}

funname

(1)必须在调⽤函数地⽅之前,先声明函数,shell脚本是逐⾏运⾏。不会像其它语⾔⼀样先编 译。

(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后⼀

条命令运⾏结果,作为返回值。return后跟数值n(0-255)

相关推荐

  1. Linuxshell编程

    2024-07-22 16:48:03       19 阅读
  2. Linux--shell编程for循环

    2024-07-22 16:48:03       54 阅读
  3. (六)LinuxShell编程(下)

    2024-07-22 16:48:03       29 阅读
  4. Linux SHELL脚本编程

    2024-07-22 16:48:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 16:48:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 16:48:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 16:48:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 16:48:03       55 阅读

热门阅读

  1. 【Vue】 组件通信方式

    2024-07-22 16:48:03       13 阅读
  2. Android 各个版本兼容型问题

    2024-07-22 16:48:03       18 阅读
  3. 透彻理解Transformer模型:详解及实用示例(C#版)

    2024-07-22 16:48:03       17 阅读
  4. 商品信息管理系统(C语言)

    2024-07-22 16:48:03       17 阅读
  5. Vue的模板编译:深入理解渲染函数与预编译模板

    2024-07-22 16:48:03       16 阅读
  6. Rust编程- 函数指针与返回闭包

    2024-07-22 16:48:03       17 阅读
  7. 0、springboot3 vue3开发平台-系统简介

    2024-07-22 16:48:03       17 阅读
  8. 将用户控件嵌入到 Excel 窗口中

    2024-07-22 16:48:03       15 阅读
  9. 数据仓库中的数据治理方法

    2024-07-22 16:48:03       17 阅读
  10. GFS分布式文件系统

    2024-07-22 16:48:03       15 阅读