shell 编写一程序,列出当前目录下指定文件的文件名,文件的首行为#!/bin/bash 20

 我来答
一辈子算不算永远
2017-09-29 · TA获得超过392个赞
知道小有建树答主
回答量:376
采纳率:50%
帮助的人:232万
展开全部
#!/bin/bash

for file in ./*
do
    if test -f $file
    then
        name=`basename $file`
        first_line=`sed '1!d' $file`
        if [ "$first_line" == "#!/bin/bash" ]
        then
            echo $name
        fi
    fi
done

我解释下代码,首先,在for循环中遍历当前目录下的所有文件,然后外层的if判断当前文件类型,如果是文件,则使用basename $file用来获取当前文件的文件名(包括拓展名)并赋值给变量name中,然后使用sed '1!d' $file获取文件第一行的内容并赋值给变量first_line,再在内层的if中判断第一行的内容是否是“#!\bin\bash”,如果是,则打印该文件的文件名。


ps:我也是刚学shell,写了半天才整出来,就当是自己也顺便练手了,哈哈。

我在我电脑上测试了下,没有问题,如果你还有问题请追问。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式