linux脚本

#!/bin/bash


for i in `seq 1 9`; do
        rm -f file10${i}
done

删除现在脚本所在目录的file101到109的文件


—————————————————————————————————————————————


#!/bin/bash

#进入第一个循环设置变量nuwUser1,seq设置序列1到9

for newUser1 in `seq 1 9`; do

        #新建用户tuser用户的数值为引用uewUser1

        useradd tuser${newUser1}

done

#设置变量newCat储存地址,地址后面的date为获取当前时间,在新建文件的时候将会直接设置时间到上面

newCat=/tmp/dir-`date +%F-%H-%M-%S`

#新建一个文件夹,引用newCat变量里面的地址新建

mkdir $newCat

#进入循环,设置newUser2变量,来区分文件序号,seq设置序列101到109

for newUser2 in `seq 101 109`; do

        #新建文件,地址引用newCat内部地址,file引用newUser2的序列设置文件序号

        touch $newCat/file${newUser2}

done

#进入循环,设置userGoup变量,来区分组序号,seq设置序列1到9

for userGoup in `seq 1 9`; do

        #修改文件基本组tuser引用userGoup序列来当组的序号,引用newCat内部地址,设置file101到109的文件的基本组,10后面引用userGoup的序列来变换文件名从101到109

        chown tuser${userGoup} $newCat/file10${userGoup}

done


或者简写


#将tmp下的地址赋值给newCat ,并且用date取得当前时间时间格式为:%F-年月日  %H-小时   %M-分钟   %S-秒

newCat=/tmp/dir-`date +%F-%H-%M-%S`    

#新建目录,$引用newCat的信息,建立的文件会带有date取得的时间            

mkdir $newCat 

#设置循环,设置i变量为1至9,seq可以生成顺序序列                         

for i in `seq 1 9`; do                                

    #新建用户 tuser引用i变量,从1循环到9建立tuser1至9

    useradd tuser${i}      

#新建文件file1至9,引用变量newCat里面的路径,再引用i变量,新建得到file101至109.          

    touch $newCat/file10${i}     

#修改文件属主,tuser引用变量i 1至9,再引用newCat变量路径,最后引用i 设置file名称,

    chown tuser${i} $newCat/file10${i}  

  #结束循环,循环体结束代表循环设置的变量全部循环完毕了

done           

创建用户tuser1-tuser10;

创建目录/tmp/dir-当前日期时间;

在/tmp/dir-当前日期事件目录中创建9个空文件file101-file109;

将file101的属主改为tuser1,以此类推,一直将file109的属主改为tuser9


—————————————————————————————————————————————

  

#!/bin/bash

file1=$1

file2=$2

#定义循环变量i,i的值为 1至2,seq可以生成顺序序列,进步为2

for i in `seq 1 2`; do             

             第一句就是引用了file的变量,但是file变量后面的值使用i变量引用的,这样是错误的写法,不能使用

       1、 #echo "$file$i the number of rows have is `wc "$file$i"`"

            第二句就是引用了i变量的之后也是错误的写法,因为不能双引用

       2、 wc -l $$i | cut -d‘ ‘ -f1                    

done

echo $file1

echo $file2

 linux中bash脚本不能引用变量内部的数值当引用值用也不能引用一个值后这个值的序号再用其他引用,如上面的写法将是不能执行的,执行的结果为:

————————————————————————————-——————————————

+ file1=/etc/passwd

+ file2=/etc/passwd

++ seq 1 2

+ for i in ‘`seq 1 2`‘

+ cut ‘-d ‘ -f1

+ wc -l 1

wc: 1: No such file or directory

+ for i in ‘`seq 1 2`‘

+ cut ‘-d ‘ -f1

+ wc -l 2

wc: 2: No such file or directory

+ echo /etc/passwd

/etc/passwd

+ echo /etc/passwd

/etc/passwd


——————————————————————————————————————



#!/bin/bash

#设置两个可以输入的参数$1和$2,设置一个整形变量num,初始值等于0,num用于计算一共循环了几次

file1=$1

file2=$2

declare -i num=0

#开始for循环,设置i变量,取值file1至2

for i in $file{1..2}; do

        #输出内容:先引用i代表i个文件,获取i变量里面的行数,通过管道送给cut列出第一列的信息

        echo "$i the number of rows have is `wc -l $i | cut -d‘ ‘ -f1`"

        #设置num变量进行算术计算,num=num+1

        let num++

        #循环变量全部循环完之后结束循环

done

#输出num,num在循环里面循环了几次就代表一共有几个文件计算了行数

echo "$num"

脚本可以接受一个以上的文件路径作为参数;

显示每个文件所拥有的行数;

显示本地供对多少个文件执行了行数统计



—————————————————————————————————————————————


#!/bin/bash

#设置一个变量“wenj”储存地址

wenj="/etc/passwd"

#设置一个变量计算给出的文件的行数是多少,通过cut列出第一列

hang=`wc -l $wenj | cut -d‘ ‘ -f1`

#设置一个整数型的变量num,初始值为0,用于计算一共循环了几次

declare -i num=0

#进入for循环,设置i变量,seq生存序列从第2个数开始,每次进步2步,取hang内部的数为序列的最后数

for i in `seq 2 2 $hang`; do

        #输出数据:用head取得wenj路径上文件的i行数据,使用tail取得i行数据的倒数第一行数据

        echo "`head -$i $wenj | tail -1`"

        #num计算一共循环一次

        let num++

done

num输出数据

echo $num


显示/etc/passwd文件中位于文件的第偶数行的用户名,并显示共有多少个这样的用户




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。