shellb编程 之 实践出真知

 1、查询file1 里面空行的所在行号

 纯空行:awk ‘{if($0~/^$/)print NR}’ file 

  空行和带空格,制表符等的行:awk '$0~/^\s*$/' file

 2、查询file1 以abc 结尾的行(是行的结尾,不是行内某个字段的结尾)

 grep abc$ file1

 3、打印出file1 文件第1 到第3 行

 sed -n ’1,3p’ file1

 head -3 file1     #-3中的短横必不可少

4, 在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么 实现?

 0 6-12/2 * 11 * /usr/bin/httpd.sh

5,用shell编程中的while写1+2+3...+100:

#!/bin/bash

i=1
total=0
while (($i<=100))    #while后的条件语句是整体,计算i是否小于等于100优先级比较高 ,此处用[$i -le 100]也是可以的
do
    total=$(($total+$i))    #实际上shell编程不靠缩进来显示语句等级,故而缩进不如done有用。
    i=$(($i+1))
done    #done是必须的,不然会输出5050次“结果是xxx。”
echo "结果是$total"

6 shell文件操作

第一题:

当前目录下创建四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell编程,实现自动创建m1,m2,m3,m4四个目录,并将m1.txt ,m2.txt,m3.txt,m4.txt 四个文件分别拷贝到各自相应的目录下。

个人版:

#!/bin/bash
#创建四个文件和目录
touch m{1..4}.txt
mkdir m{1..4}

for i in {1..4}
do
    cp m$i.txt ./m$i
done

答案版:

#!/bin/bash
touch m1.txt m2.txt m3.txt m4.txt
I=1 
while [ $I -le 4 ]
do 
   mkdir m$I
   cp m$I.txt m$I
   I=$((I+1))
done

第二题

判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下 

echo -e "pls input filename \n"    #-e其实没特别的用处,echo的目的是让read完成取信于人的环境
read FILENAME    #相当于从键盘上获取应得的,谢谢
if [ -c $FILENAME ]      #这个是test用法,意思是判断FILENAME是否是字符设备
then
    cp $FILENAME /dictionary1
else
    echo "not charactor device file"
fi

补充,关于test的一些用法,可以直接写在方括号中,不加“test”

-d file 检查file是否存在并是一个目录     #-d测试会检查指定的文件名是否在系统上以目录形式存在
-e file 检查file是否存在 
-f file 检查file是否存在并是一个文件 
-r file 检查file是否存在并可读 
-s file 检查file是否存在并非空 
-w file 检查file是否存在并可写 
-x file 检查file是否存在并可执行 
-O file 检查file是否存在并属当前用户所有 
-G file 检查file是否存在并且默认组与当前用户相同 
file1 -nt file2 检查file1是否比file2新 
file1 -ot file2 检查file1是否比file2旧 

  

猜你喜欢

转载自www.cnblogs.com/0-lingdu/p/9291152.html