linux之shell脚本浅析

玩转linux系统经常碰到需要编写shell脚本处理一些特殊操作,下面以一个简单例子浅析记录一下,后续更新。

#!/bin/sh

echo "input the name"
read name
echo "$name"
if [ 1 -eq "$name" ]; then
    echo "1"
elif [ 1 -eq "$name"];then
    echo "2"
else
    echo "3"
fi

此shell脚本应用了if逻辑或读取用户输入。

sed
Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。
sed [option] ‘sed command’ filename
sed命令的选项(option):
-n :只打印模式匹配的行
-e :直接在命令行模式上进行sed动作编辑,此为默认选项
-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-r :支持扩展表达式
-i :直接修改文件内容
sed command:
a\ 在定位行号后附加新文本信息
d 删除定位行
s 使用替换模式替换相应模式
g 将模式2粘贴到/pattern n/

1、修改路由实例(追加路由信息)

#!/bin/sh

path=/etc/network/static-routes
echo $path
src_ipaddr1=192.168.1.1
dst_ipaddr1=192.168.254.254
src_ipaddr2=192.168.2.1
dst_ipaddr2=192.168.254.254
echo $src_ipaddr1
echo $dst_ipaddr1
echo $src_ipaddr2
echo $dst_ipaddr2

sed -i "6a any net $src_ipaddr1 netmask 255.255.0.0 gw $dst_ipaddr1" $path
sed -i "6a any net $src_ipaddr2 netmask 255.255.0.0 gw $dst_ipaddr2" $path

其中,6a代表在第6行之后插入,-i代表插入;在指定路径的文件中在第6行之后插入指定内容。

2、修改ip实例(替换ip信息)

#!/bin/sh

path=/etc/network/interfaces
echo $path
src_ipaddr1=192.168.1.1
dst_ipaddr1=192.168.1.1
src_ipaddr2=192.168.1.1
dst_ipaddr2=192.168.1.1
src_ipaddr3=192.168.1.1
dst_ipaddr3=192.168.1.1
echo $src_ipaddr1
echo $dst_ipaddr1
echo $src_ipaddr2
echo $dst_ipaddr2
echo $src_ipaddr3
echo $dst_ipaddr3
sed -i "s/$src_ipaddr1/$dst_ipaddr1/g" $path
sed -i "s/$src_ipaddr2/$dst_ipaddr2/g" $path
sed -i "s/$src_ipaddr3/$dst_ipaddr3/g" $path

其中,-i代表插入,s代表替换;在指定路径的文件中将源内容替换为目标内容。

注:在写测试sh脚本时注意winows下的回车与linux下的回车不同,会导致错误,建议直接在linux下通过vim编辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值