Linux-shell简单使用

Linux提供的Shell解析器有

Ubuntu默认:

Shell脚本入门
脚本以**#!/bin/bash**开头(指定解析器)
1 | qs:~$ vim helloworld.sh |
运行方式:
- sh/bash + 路径 如
sh ./helloworld.sh、bash ./helloworld.sh - 直接运行脚本,先赋予执行权限
chmod +x helloworld.sh,然后直接执行./helloworld.sh
变量
常用系统变量
PATH、HOME、PWD、SHELL、USER等
获取变量的值
语法:$变量名
$和变量名之间不能有空格。

显示当前Shell中所有变量:set
自定义变量
(1)定义变量:变量名=变量值,注意,**=号前后不能有空格**。
(2)撤销变量:unset 变量名。
(3)声明静态变量:readonly变量,注意:不能重新赋值,不能unset。
(4)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
(5)变量的值如果有空格,需要使用双引号或单引号括起来。
(6)最右侧分号可有可无,一般都不写


注意:变量默认类型都是字符串类型,无法直接进行数值运算


可把变量提升为全局环境变量,可供其他Shell程序使用
语法:export 变量名
在helloworld.sh文件中增加echo $B。
1 |
|
执行
1 | atguigu@ubuntu:~$ B=3 |
发现并没有打印输出变量B的值
1 | atguigu@ubuntu:~$ export B |
特殊变量
$n
(功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}。)
新建hello.sh
1 |
|

$#
$# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。)。
建立脚本
1 |
|

$*、$@
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体。)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。)
$?
(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

算术运算
$((运算式))或者$[运算式]

条件判断
基本语法
写法1:
test condition写法2:
[ condition ](condition前后有空格)
注意:条件成立(数据非空)即为0(真),否则为1(假)
test atguigu返回0,test 返回1
[ atguigu ]返回0,[ ] 返回1。[ “” ]返回1


常用判断条件
- 比较数值
[ ]中不能直接使用=、>、<等,(( )) 主要用于执行算术运算与条件判断。其内部能运用常见的 C 语言风格算术和比较运算符。
-eq 等于(equal) -ne 不等于(not equal)
-lt 小于(less than) -le 小于等于(less equal)
-gt 大于(greater than) -ge 大于等于(greater equal)

- 按照文件权限判断
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)

- 按照文件类型进行判断
-e 文件存在(existence)
-f 文件存在并且是一个常规的文件(file)
-d 文件存在并且是一个目录(directory)

- 多条件
&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命

流程
if 判断
1 | if [ 条件判断式 ]; then |
① [ 条件判断式 ]中括号和条件判断式之间必须有空格
② if后要有空格
1 |
|
case
1 | case $变量名 in |
注意事项:
(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于C中的break。
(3)最后的“*)”表示默认模式,相当于C中的default。
1 |
|
for
1 | for ((初始值;循环控制条件;变量变化)) |
1 |
|
还有一种用法
1 | for 变量 in 值1 值2 值3… |
1 |
|
while循环
1 | while [ 条件判断式 ] |
1 |
|
read命令
读取终端输入到指定变量中
用法:read (选项) (参数)
选项:
-p:指定读取值时的提示符。
-t:指定读取值时等待的时间(秒)如果-t不加表示一直等待。
变量:指定读取值的变量名

函数
Shell命令是构成Shell脚本的基础单位,包括预定义的操作系统命令和外部工具。
Shell函数是用户自定义的代码块,用于封装复杂操作,提高代码的模块化和复用性。
命令直接作用于Shell环境,而函数则是在Shell环境中定义并调用的,提供了更灵活的编程能力。
自定义函数
1 | [ function ] funname[()] 注意只能省略其中一个 |
(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)。
1 |
|

Linux-shell简单使用

