shell编程

标准的shell脚本包含要素:

  • Sha-Bang
  • 命令
  • chmod u+rx filename
  • 执行命令
    • bash ./filename.sh
    • ./filename.sh
    • source ./filename.sh
    • .filename.h

1、脚本用法注释,申明脚本运行方式,可以优雅和简化运行步骤

#!/bin/bash

2、

  • $*、$@:代表命令行中所有的参数,前者把所有参数看作一个整体,后者对每个参数区分对待。
  • $?:最后一次执行命令的返回状态。正确为0错误为1.

3、赋值运算符不能有空格,算术运算符必须有空格

4、条件判断,中括号和条件判断式中间必须有空格

5、if 判断

#!/bin/bash

if [ $1 -eq 1 ]
then 
        echo "hello shell!"
elif [ $1 -eq 2 ]
then
        echo "hate shell"
fi 

6、case语句

#!/bin/bash

case $1 in 
1)
        echo "nihao"
;;
2)
        echo "hello"
;;
*)
        echo "gun"
;;
esac

7、for循环

#!/bin/bash

s=0
for((i=1;i<=100;i++ ))
do 
        s=$[$s+$i]
done 

echo $s

8、while循环

#!/bin/bash

s=0
i=0
while [ $i -le 100 ]
do 
        s=$[$s + $i]
        i=$[$i + 1]
done

echo $s

9、切割文件的第一列:

cut -d "" -f 1 filename.txt

10、cut

 一、切割cut.txt第一列

cut -d " " -f 1 cut.txt

二、在文件cut.txt中切割出shen

cat cut.txt | grep shen | cut -d  " " -f 1 

11、sed

(以文件sed.txt为例)

一、将“ ni hao”这个单词插入到sed.txt第二行下,打印。

sed "2a ni hao" sed.txt

二、删除sed.txt文件所有包含wo的行

sed '/wo/d' sed.txt 

三、将sed.txt文件中wo替换为ni

sed "s/wo/ni/g" sed.txt 

四、将sed.txt文件中的第二行删除并将wo替换为ni

sed -e "2d" -e  "s/wo/ni/g" sed.txt

12、awk

awk[选项参数]  'pattern1{action1} pattern2{action2}...' filename     pattern:表示awk在数据中查找的内容,就是匹配模式    action:找到匹配内容时所执行的一系列命令

一、搜索passwd文件以root关键字开头的所有行,并输出该行的第7列

awk  -F: '/^root/{print $7}' passwd 

二、搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列。中间以“,”隔开

awk  -F: '/^root/{print $1","$7}' passwd 

三、只显示passwd的第1列和第7列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加“gg,bin/haoya”

awk -F: 'BEGIN{print "user,shell"} {print $1","$7} END{print "gg,bin/haoya"}' pass

四、统计passwd的文件名,每行的行号,每行的列数

awk -F : '{print FILENAME "," NR"," NF}' passwd

五、查询sed.txt中空行所在的行号

awk '/^$/{print NR}' sed.txt

13、sort  

作用:将文件进行排序,并将排序结果标准输出

按照“:”分割后的第三列倒序排序     -t:设置排序时所用的分隔字符 -n:依照数值的大小排序  -r:以相反的顺序来排序 -k:指定需要排序的列

sort -t : -nrk 3 sed.txt

*练习:

找出当前文件夹(/home)下所有的文本文件内容中包含有字符"shen"的文件名称

grep -r "shen" /home | cut -d ":" -f 1

  

原文地址:https://www.cnblogs.com/darklights/p/11592842.html