Shell编程

把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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值