菜鸟一位想写一个linux shell 脚本,执行次脚本回显数字,执行第一次回显1,执行第二次显示2,以此类推...

菜鸟一位想写一个linux shell 脚本,执行次脚本回显数字,执行第一次回显1,执行第二次显示2,以此类推...,第1张

请问楼主这样的脚本 是你实现另一个脚本的细节部分吧?

如果是这样,建议:

1、首先局部变量不可以长期保存,也就是说有存活期

比如:countNum=2

如果你长时间不运行再去运行的话,想让输出3,但这时候countNum可能已经恢复成0了

所以楼上正解,保存到一个文件

其次,可以生命为全局变量。即 export countNum=2

这样的方法,保证执行次数正确无误

2、其次如果不是一个大的脚本的小细节的话,这样的脚本没有任务意义~

纯手打,请采纳~

!#/bin/awk -f

BEGIN{

    print "下面是文件对列的统计"

}

{

    for(i=1i<=NFi++)

        ++a[i][$i]

}

END{

    for(i=1i<=NFi++)

    {

            printf("第%s列",i)

            for(j in a[i]) printf("\t%s,%s次",j,a[i][j])

            print "";

        }

        print "输出完毕"

}

将这个文件保存成一个文本文件,我这里举例文件名叫script,你要改成什么都可以

然后在命令行里敲

gawk -F"," -f /path/to/script /path/to/your/txt/file

比如你的test.txt和script文件都放在同一个文件夹/home/ha,那这个命令就是

gawk -F"," -f /home/ha/script /home/ha/test.txt

或者你也可以单敲一行命令

gawk -F"," 'BEGIN{ print "开始输出对列的统计"} { for(i=1i<=NFi++) ++a[i][$i]} END { for(i=1i<=NFi++) { printf("第%s列",i)for(j in a[i]) printf("\t%s,%s次",j,a[i][j])print ""} print "输出完毕"}' test.txt

都是一样的,test.txt是你要统计的文件

这下面你的文件产生的输出

开始输出对列的统计

第1列 1,5次 10,1次

第2列 2,4次 20,2次

第3列 3,5次 30,1次

第4列 4,6次

第5列 5,5次 50,1次

第6列 6,3次 60,3次

输出完毕

awk有很多很多版本,这个脚本用gawk是可以的,其他的awk不一定。

每种SHELL的用户个数:

awk -F":" '{print $7}' /etc/passwd | uniq -c

第2个问题思路:

另外一个需要用for去读passwd的每一行,用awk去取出每行的第一个字段(用户名)赋值给一个变量,取第7个字段(SHELL)赋值给另外一个变量;接下来就判断第7个字段(shell)是否为空,如果为空就输出第一个字段(即用户名)。

太晚了,有时间再把脚本补上来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7238661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存