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