bash命令

2026年01月21日/ 浏览 8

1:命名规则

命名只能使用字母,数字,下划线,其中不能以数字开头

中间不能有空格,下划线可以

不能使用标点符号

不能使用bash关键字

2:变量

my_father=“liming”[赋值] echo $my_father 【调用】
代码解读:

将10赋值给a,

readonly a 将a设置为只读变量,

echo $a 调用a

unset a 删除变量a ,系统提示:只读变量

代码解读:

b为一个数组

echo ${b[1]} 表示打印数组的第二个元素

echo ${b[*]}和echo ${b[@]}表示打印数组中的所有元素

注意定义单个数组例如: a[0]=1 表示将数值1赋值给数组a的第一个元素

字符串拼接my_father="xiaoming" # 将xiaoming赋值给my_father msg1="hello,$my_father" # 拼接字符串 echo $msg1 # 输出拼接后的字符串 hello,xiaoming控制语句if语句if condition then command else condition then command fi

比较两个数字大小

a=10 b=20 if [$a -gt $b] ; then echo "winner"else [$a -lt $b] ; then echo "loser" ; fi

其中 -gt 是大于的意思,-lt是小于的意思

详细可查看公众...........

for循环 for var in item1 item2.... do command .... done

详细可查看公众...........

while循环while condition do command donewhile read line ; do echo $line ; done<tmp.sh 

详细可查看公众号...........tester阿飞,回复【shell】就可获得

read命令

从终端或者文件读取输入的内部命令,整行读取,不读取行末换行符

read var 读取单个变量 read var1 var2 var3 读取多个变量,变量之间使用空格分开

注意:如果使用read 不指定变量名传递参数,参数会被存储到指定变量REPLY下

注意大小写

脚本参数传递

$0 脚本名称

$1-$n 获取参数

$# 传递到脚本的参数的个数

$$ 当前运行脚本的进程id号

$* 显示所有参数

$? 显示最后的退出状态 0表示正常,其他都表示错误

基本运算加法 expr $a + $b 减法 `expr $a - $b` 乘法 `expr $a \* $b` 除法 `expr $a / $b` 取余 `expr $a % $b` 赋值 a=$b 表示把b的值赋值给a 相等 [$a==$b] 返回一个布尔类型 不等 [$a!=$b] 返回一个布尔类型 判断相等 [$a -eq $b ] 返回一个布尔类型 判断不相等 [$a -ne $b] 返回一个布尔类型 判断大于等于 [$a -ge $b] 返回一个布尔类型 判断小于等于 [$a -le $b] 返回一个布尔类型 判断大于 [$a -gt $b] 返回一个布尔类型 判断小于 [$a -lt $b] 返回一个布尔类型

注意:条件表达式要放在方括号([])内,并且要有空格,例如:比较变量a和b是否相等[ $a == $b ]

使用expr做运算时乘法运算*必须加转义符\,才能实现乘法运算;使用[]则不需要转义

扩展

curl命令

发送get请求 【默认get方法】

curl -G https://www.baidu.com 获取百度页面

发送post请求

curl -X POST https:// www.baidu.com 指定post请求 curl -o +路径文件名称 +url 将返回信息保存到指定路径 curl -v 显示传输的详细信息 curl -d 指定请求数据jq json提取器

帮助文档: http://linux.51yip.com/search/jq

[ { "code": "4401", "lat": 23.422825, "lon": 113.30765, "name": "广州市" }, { "code": "4402", "lat": 24.80296, "lon": 113.59446, "name": "韶关市" } ]

上面是一组json数据,如果我们想要提取所有数据,假如数据放在test.json

使用jq . test1.json就能提取到所有的数据

使用jq .[1] test1.json就能提取到第二组数据

使用jq .[1].code 提取到第二组数据code的值

jq .[1]>test2.json test1.json 将文件重定向到test.json

jq [.code,.name] test2.json 将数据转成了数组

更多有关jq的使用技巧请查阅:DevDocs — jq documentation

picture loss