一个自动编辑文件的shell脚本自己玩的

之前由于自己需要编写大量的xml文件,所以就写了这个脚本,本人不会写脚本,通过这次就学习了脚本的写法,然后记录在这以便随时补充和学习shell脚本的内容,并通过该脚本拓展一下shell中的很多语法,并记录一下awk和tr命令的使用,其他像sed,grep等以后用到时在补充吧

 #!/bin/bash

fn=htlm.xml                        //shell编程中“=”两边不允许出现空格
echo "<html>" >> ${fn}             //fn变量引用时要可以$fn也可以使用${fn}
echo "<head>" >> ${fn}

if [ $# -ne 1 ]
then
    echo "please input file row(column) number"
    exit
fi

for i in $(seq 1 $1)
do
   cnt=$i
   label=`awk -vnvar="$cnt" '{if(NR == nvar) {print $1}}' tmp.xml`
   value=`awk -vnvar="$cnt" '{if(NR == nvar) {print $2}}' tmp.xml`
   echo "${label} ${value}"
   echo "<${label}>${value}</${label}>" >> ${fn}
done

echo "</head>" >> ${fn}
echo "</html>" >> ${fn}

tmp.xml文件,用来输入key value对

title csdn
style 3
link  a
div  3 

效果展示

<html>
<head>
<title>csdn</title>
<style>3</style>
<link>a</link>
<div>3</div>
</head>
</html>

特殊变量:
在这里插入图片描述
$* 和 $@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" “)包含时,都以”$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。

但是当它们被双引号(" “)包含时,”$*" 会将所有的参数作为一个整体,以"$1 $2 … n " 的形式输出所有参数; " n"的形式输出所有参数;" n"的形式输出所有参数;"@" 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。

操作符:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
“=~” 正则匹配,用来判断其左侧的参数是否符合右边的要求,如果匹配则为真(返回0),不匹配则为假(返回1)。
在这里插入图片描述
if语法:

if [ expression ]   //在expression两端是要有空格的,以上的操作符内容可运用在这里
then
	expression
else
	expression
fi

for语法:

for i in $(seq 1 10)  //for in $(seq 1 2 10): 1起始,2步长,10终点;for ((i = 0; i < 10; i++)) ;for i in 1 2 3 4;for str in "w er t" "a w t"
do
	expression    //里面可以使用continue,break语句
done

awk使用:
使用man手册查看
gawk [ POSIX or GNU style options ] [ – ] program-text file
例子:

awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'
awk '{ sum += $1 }; END { print sum }' file
awk -F: '{ print $1 }' /etc/passwd

用到的-F和-v使用的最多,在文件shell脚本中在给awk命令传入变量时总是失败,于是找到了-v参数,然后如脚本程序中使用
awk -vnvar=“$cnt” ‘{if(NR == nvar) {print $2}}’ tmp.xml, 使用-v将cnt变量给了nvar,nvar在awk程序中使用,即是cnt值
tr使用:
tr [OPTION]… SET1 [SET2]
-d, --delete: tr -d ';'删除分号
其它的使用的方式没有用过,用时man手册

截图来源
http://c.biancheng.net/cpp/shell/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值