把shell命令堆积到一起,是一个文本
1.执行shell命令
- 绝对路径执行,相对路径(要多加./)
- sh+ 路径
'
2.变量相关
变量可以定义时可以加 ‘’ "" 或者 不加
3.传递参数
echo $1
echo $2
echo "个数:$#"
echo "参数作为一个长字符串: $*"
echo "PID: $$"
$1 表示第一个参数
$# 表示传递的参数个数
$* 把参数作为一个字符串打印出来
$$ 当前shell进程的pid
4.数组
#!/bin/bash
arr=(1 2 3 4 5)
echo ${arr[@]}
echo ${arr[*]}
echo ${arr[0]}
echo ${#arr[@]}
前两个都是打印数组的全部内容,最后一个打印数组元素的个数
5. if判断
#!/bin/bash
A="abc"
B="jepson"
if [ $a == $b ];then
echo "=="
else
echo "!="
fi
多重循环
if [];then
elif [];then
else
fi
注: == 前后要有空格
6.循环
#!/bin/bash
for x in 1 2 3 4 8
do
echo $x
done
#!/bin/bash
for((i=1;i<=5;i++))
do
echo $i
done
7.分割
#!/bin/bash
S="a,b,c,d,e,f,g"
OLD_IFS="$IFS"
IFS=","
arr=($S)
IFS="OLD_IFS"
for x in ${arr[*]}
do
echo $x
done
8. awk循环输出
#!/bin/bash
cat a.log|awk '{print $1}' 打印第一列
cat a.log|awk '{print $0}' 打印全部
cat a.log|awk '{print $1,$2}' 打印第一二列,保留原来的数据格式
cat a.log|awk '{print $1$2}' 打印第一二列,中间无空格
cat a.log|awk 'NR==1' 打印第一行
cat a.log|awk 'NR>1' 打印大于第一行的所有行
文本变成带逗号的时候,如何还按照上面的列分割方式,会打印出全部内容。
打印第二列,除去第一行
9.sed替换
把log文件里面的a替换为aa:
把a换成aa' , 单引号变成双引号
把所有的b换成w
在每行行首加uuu
在每行行尾加end