博文基于尚硅谷高级技术之shell,视频地址3天搞定Linux,1天搞定Shell,清华学神带你通关。
shell概述
命令解释器,接收应用程序/用户命令,调用系统内核。
Linux提供的shell
Ubuntu20.04下
默认的shell
最常用的还是bash,可通过查看SHELL
环境变量,查看默认的shell
shell入门
格式
- 以
#!/bin/bash
开头(指定解析器)
执行
- 第一种:采用
bash
或sh
加脚本的相对路径或绝对路径(不用赋予脚本+x 权限),本质是 bash 解析器帮你执行脚本。 - 第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x),本质是脚本需要自己执行。
- 第三种:在脚本的路径前加上“.”或者 source(不用赋予脚本+x 权限),读取脚本文件并将其内容直接导入到当前 shell 环境中运行
hello word脚本
#!/bin/bash
echo "Hello World!"
变量
系统变量
如PATH、SHELL、HOME等
自定义变量
- 定义变量:变量名=变量值
- 撤销变量:unset 变量名
- 吊销变量:unset 变量
- 静态变量
- 说明:readonly 变量
- 不能 unset
- 作用域是整个程序、只读、生命周期与程序相同
说明
-
用变量时,应该$变量
-
显现当时 shell 中悉数变量:set
-
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
-
等号两侧不能有空格
-
在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
-
变量的值如果有空格,需要使用双引号或单引号括起来。
-
可把变量提升为全局环境变量,可供其他 Shell 程序使用
案例
- 声明和查看
- 修改值,是字符型,不能运算
- 有空格等应该用“”
- 注销变量
unset
- 静态变量(readonly)
- 全局环境变量,可供其他 Shell 程序使用
特殊变量
$n
- $0 代表该脚本名称
- n为数字,$1-$9 代表第一到第九个参数
- 十以上的参数需要用大括号包含10,如${10}
案例:传入三个参数,输出
#!/bin/bash
echo "脚本名称:$0"
echo "第一个参数:$1"
echo "第二个参数: $2"
$#
- 获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性
案例:返回参数个数
#!/bin/bash
echo "脚本名称:$0"
echo "第一个参数:$1"
echo "第二个参数: $2"
echo "参数个数:$#"
$*、$@
- $* 代表命令行中所有的参数,$*把所有的参数看成一个整体
- $@ 代表命令行中所有的参数,不过$@把每个参数区分对待
- 加上
" "
时,$*会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;$@会将各个参数分开,以“$1” “$2”…“$n”的形式输出所有参数- 如
for j in "$@"
,有多少个参数j就是几 for j in "$*"
,j永远是1
- 如
案例:
#!/bin/bash
echo $0
echo $1
echo $2
echo $#
echo $*
echo $@
$?
- 最后一次执行的命令的返回状态。
- 如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0,则证明上一个命令执行不正确了。
- 可以用exit num返回自己设置的状态码
案例:
#!/bin/bash
#运行一个命令
echo "hel