1.

shell执行有4种方式,除了众所周知的还有另外一种:

sh < test.sh 或者 cat test.sh |sh(bash)

linux下变量区分大小写

变量=赋值等号两边都不能有空格。

2.

日期命令

[root@xuegod13 ~]# date +%F
2022-01-24
[root@xuegod13 ~]# date +%Y-%m
2022-01
[root@xuegod13 ~]# date +%Y-%m-%d
2022-01-24
设定时间:
date -s 20180523 #设置成 20120523,这样会把具体时间设置成空 00:00:00
date -s 01:01:01 #设置具体时间,不会对日期做更改
date -s "2018-05-23 01:01:01" #这样可以设置全部时间

3.

双引号之间可以引用反引号执行命令

4.

$$:当前程序的进程ID

$!:运行的上一个后台进程的PID

!$:上一个命令的最后一个参数

5.

数学运算

expr 2 \* 3  计算2乘以3,要加反斜杠

6.

字符串

[root@xuegod13 ~]# expr length "ni hao"
6
[root@xuegod13 ~]# expr substr "ni hao" 2 4
i ha

7.

运算符还可以使用$(()),这样在双括号中所有变量可以不加$符号前缀

双括号结构扩展了for while,if条件测试运算。

支持多个表达式运算,各个表达式之间用逗号分开

8.

命令的嵌套使用,使用$( $( ))

[root@xuegod63 ~]# find /root/ -name *.txt
[root@xuegod63 ~]# VAR6=$(tar zcvf root.tar.gz $(find /root/ -name *.txt))
tar: 从成员名中删除开头的“
/”
[root@xuegod63 ~]# echo $VAR6
#查看值, VAR6 中存储着 tar 的标准输出
/root/.cache/tracker/db-version.txt /root/.cache/tracker/db-locale.txt
/root/.cache/tracker/parser-sha1.txt /root/.cache/tracker/locale-for-miner-user
guides.txt /root/.cache/tracker/locale-for-miner-apps.txt /root/.cache/tracker/last
crawl.txt

9.

环境变量

在 bash shell 中,变量分为两类:全局变量和局部变量

全局变量:对于 shell 会话和所有的子 shell 都是可见的

局部变量: 它只在自己的进程当中使用

10.

expr命令用于数字基本计算和对字符串的处理,注意运算符和数字之前都要有空格,否则无法得出正确结果

expr 命令
(1)对数字的基本计算,做比较时,输出结果假为 0,1 为真;特殊符号用转义符
[root@xuegod63 ~]# expr 2 \> 5
0
[root@xuegod63 ~]# expr 6 \> 5
1
[root@xuegod63 ~]# expr 3 * 5
expr: 语法错误
[root@xuegod63 ~]# expr 3 \* 5
15
[root@xuegod63 ~]# expr 3 \+ 5
8(2)对字符串的处理
[root@xuegod63 ~]# expr length "ni hao" 6
[root@xuegod63 ~]# expr substr "ni hao" 2 4 #从第 2 个开始,截取 4 个字符出来,注意这里下标是从1开始的
i ha

11.

$(( ))应用

格式:$((表达式 1,表达 2))

特点:

1、在双括号结构中,所有表达式可以像 c 语言一样,如:a++,b--等。a++ 等价于 a=a+1

2、在双括号结构中,所有变量可以不加入:“$”符号前缀。

3、双括号可以进行逻辑运算,四则运算

4、双括号结构 扩展了 for,while,if 条件测试运算

5、支持多个表达式运算,各个表达式之间用“,”分开