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

2025-01-04 04:47:45
推荐回答(1个)
回答1:

#!/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,写了半天才整出来,就当是自己也顺便练手了,哈哈。

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