shell脚本基础

shell工作中必不可少。今天来系统学习一下shell。
shell的编写离不开linux命令,看这篇

1.shell demo

#!/usr/bin/env bash
echo "hello,shell."

上面的文件名:echo.sh
运行command:sh echo.sh
输出:hello,shell.

2.shell变量

2.1 变量基础

定义变量:变量名不加美元符号。
使用一个定义过的变量时,要在变量名前加美元符号。

#!/usr/bin/env bash
SERVICE="test"
echo $SERVICE
echo "$SERVICE version:1.1.1"
echo "our service name is ${SERVICE}abc"#加花括号是为了帮助识别变量的边界,建议加上

文件名:variable.sh
运行command:sh variable.sh
输出:
test
test version:1.1.1
our service name is testabc#加花括号是为了帮助识别变量的边界,建议加上

2.2 变量赋值

#!/usr/bin/env bash
SERVICE="test"
SERVICE="test_1" #重新赋值
echo $SERVICE

XX=$SERVICE #新变量 使用变量,注意写$
echo $XX

输出:test_1

2.2 只读变量

使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变。
readonly 变量名

2.3 删除变量

unset命令
unset 变量名

2.4 环境变量

shell脚本也可以定义环境变量。

#!/usr/bin/env bash
export PATH=/opt/compiler/gcc-8.2/bin:$PATH

3.shell字符串

双引号、单引号、不用引号都可。

#!/usr/bin/env bash
name="golang"
str="$name,start!!" #拼接
echo $str

输出:golang,start!!

4.shell数组

bash支持一维数组不支持多维,并且没有限定数组的大小。

#!/usr/bin/env bash
fruit=(banana chelizi caomei ganzhe)
echo ${fruit[@]} #打印所有元素
echo ${fruit[0]} #打印0号元素

echo ${#fruit[@]} #取数组元素的个数
echo ${#fruit[0]} #取某个元素(0号元素)的长度
输出:
banana chelizi caomei ganzhe
banana
4
6

5.传递给脚本的参数

#!/usr/bin/env bash
echo $0 #执行的文件名
echo $$ #脚本运行的当前进程ID号

echo $# #传给脚本的参数个数
echo $@ #传给脚本的参数

运行sh param.sh a b
输出:
param.sh
31011
2
a b

6.运算符

6.1关系运算符

跟语言的不太一样。
只支持数字。

  • -eq 两个数是否相等,也可用 ==
  • -ne 不相等,也可用 !=
  • -gt 大于
  • -lt 小于
  • -ge 大于等于
  • -le 小于等于
    eg.[ $a -le $b ] 成立则返回true

6.2 算术运算符

加减乘除取余:
+  -  \*  /  % 

6.3 逻辑运算符

&& and
|| or

6.4 布尔运算符

!非运算
-o 或
-a 与

7.if…else for while…

sh的流程控制不可为空。

8.$()

在 bash shell 中,$()是将括号内命令的执行结果赋值给变量.
deployDir=$(pwd)
注意区别${}

#!/usr/bin/env bash
a=10
b=${a}  ${a}是使用变量

9.shell正则表达式

10.函数

11.shell特殊变量

变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n是数字,$1代表第1个参数,$2代表第2个参数
$#传递给脚本或函数的所有参数的个数
$*传递给脚本或函数的所有参数
$@传递给脚本或函数的所有参数。用双引号包含时,与$*稍有不同 。一个是一行一行的打印,一个是…
$?上一个命令的退出状态,或者函数的返回值
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值