Linux学习—shell编程(一)

shell概述

计算机系统:硬件->Linux内核->shell(做一个解释工作)->外层应用程序

shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

常见的shell解释器:

编写最简单的shell脚本

  1. 先创建一个文件夹,在文件夹内创建一个shell脚本:

  1. vim hello.sh开始进行编辑

  1. 执行shell脚本:bash 路径 / sh 路径

方法二:直接输入 绝对/相对路径,即可执行

查看当前文件权限,发现不可执行,要先修改文件权限

变成可执行文件:

相对路径执行脚本

绝对路径执行脚本

方法三:. 或者 source 脚本路径

shell中的变量

系统变量

常见的系统变量:$HOME(主目录),$PWD(工作目录),$SHELL(使用的解析器),$USER(当前用户)等。

  1. 查看系统某个变量:echo 系统变量

  1. 查看全部系统变量:env / printenv

  1. 查看所有变量(包括系统的全局变量和局部变量):set

自定义变量

  1. 用户自定义变量:变量名=变量值(注意等号前后不能有空格)

  1. 将自定义变量(局部变量)升级为全局变量:export 变量名

如图所示,自定义变量my_value在新打开的子shell中是查询不到的

升级为系统变量后在子shell中即可查询

  1. 定义只读变量:readonly 变量

  1. 删除自定义变量:unset 变量名

只读变量不能unset,关掉终端重新开启,变量就没有了。

特殊变量

  1. $n:n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}

带参数的脚本:

测试特殊符号的使用

  1. $#:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。

  1. $*,$@:

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

  1. $?:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。

运算符

基本运算的语法:$[运算表达式] / $((运算表达式))

编写一个简单的脚本程序

条件判断

  1. 基本使用语法:test 语句,若当前判断为true,会返回0,否则返回1;查看返回结果使用echo $?

判断方法二:[ 语句 ](注意判断语句前后要有空格

字符串之间的等或不等直接用“=”或“!=”即可

  1. 整数之间的判断

-eq

等于(equal)

-ne

不等于(not equal)

-lt

小于(less than)

-le

小于等于(less equal)

-gt

大于(greater than)

-ge

大于等于(greater than)

  1. 文件的判断

-r

可读的权限

-e

文件存在

-w

可写的权限

-f

文件存在且是一个一般文件(file)

-x

执行的权限

-d

文件存在且是一个目录

  1. 多条件判断:&& 和 ||

C语言中的问好表达式:a>b?a=1:b=2在shell中即可用下面形式实现:

[ a -gt b] && res=true || res=false

执行原理:&&表示前一条命令执行成功时,才会执行res=true,||表示上一条命令执行失败时,才执行res=false。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值