1.显示行号
vim test.sh
:set nu 显示行号
2.参数
1
2
3
4
5
| echo $1
echo $2
echo "参数个数:$#"
echo "参数作为一个长字符串: $*"
echo "当时执行脚本PID: $$"
|
3.数组
数组只支持一维
1
2
3
4
5
6
7
| #!/bin/bash
arr=(aaa bbb ccc ddd eee)
echo ${arr[@]} #数组全部的值
echo ${arr[*]} #同上
echo ${arr[3]} #下标3的值(下标从0开始)
echo ${#arr[@]} #数组的个数
|
结果:
1
2
3
| aaa bbb ccc ddd eee
aaa bbb ccc ddd eee
ddd
|
5
4.if判断
1
2
3
4
5
6
7
8
9
10
11
12
13
| #!/bin/bash
A="aaa"
B="bbb"
if [ ${A} == ${B} ];
then
echo "等于"
elif [ ${A} > ${B} ];
then
echo "A > B"
else
echo "不等于"
fi
|
结果:
不等于
5.循环
for 和 while
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #!/bin/bash
J=0
for x in 1 2 3 4 5 6
do
echo $x
let "J++" #J自加1
done
echo ${J}
for ((i=1;i<100;i++))
do
echo ${i}
done
x=1
while((x<10))
do
echo ${x}
let "x++"
done
|
6.分割
按逗号分割字符串变成数组
arr=($STR)用于将字符串$STR分割到数组$arr ${arr[0]} ${arr[1]} … 分别存储分割后的数组第1 2 … 项 ,${arr[*]}存储整个数组。变量$IFS存储着分隔符,我这里的默认分隔符是\n,然后我们将IFS设为逗号 “,” OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认(IFS=${OLD_IFS})。
1
2
3
4
5
6
7
8
9
10
11
12
| #!/bin/bash
STR="aaa,bbb,ccc,ddd"
OLD_IFS="$IFS"
IFS=","
arr=(${STR})
IFS="OLD_IFS"
for x in ${arr[*]}
do
echo $x
done
|
7.awk
取数
创建一个文件
1
2
3
4
| vim awk.log
a b c
1 2 3
4 5 6
|
默认空格作为分隔符
1
| cat awk.log |awk '{print $1}' #打印第一列
|
1
| cat awk.log |awk '{print $1,$2}' #打印1 2列
|
1
| cat awk.log |awk 'NR==1' #打印第一行
|
1
| cat awk.log |awk 'NR>1' #打印大于第一行
|
1
| cat awk.log |awk 'NR==2 {print $1}' #取第二行的第一列
|
已逗号(,) 拆分列
1
| cat awk.log |awk -F ',' '{print $1}' #以逗号拆分并打印第一列
|
8.ded
替换
创建一个文件
1
2
3
| vim sed.log
a b c
1 2 3
|
1
2
3
4
| sed -i 's/a/aa' sed.log #将文件里的a 替换成 aa
cat sed.log
aa b c
1 2 3
|
1
2
3
| sed -i 's?aa?bb?' sed.log #问号(?)也可以分割
bb b c
1 2 3
|
1
2
3
| sed -i "s/b/e/g" sed.log #全部的b替换成e 结尾的g代表全局的
ee e c
1 2 3
|
1
2
3
| sed -i "s/^/www&/g" sed.log #每行的头加上www
wwwee e c
www1 2 3
|
1
2
3
| sed -i "s/$/|end/g" sed.log #每行尾拼接 |end
wwwee e c|end
www1 2 3|end
|