shell 编写一程序,列出当前目录下指定文件的文件名,文件的首行为#!/bin/bash 20
展开全部
#!/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,写了半天才整出来,就当是自己也顺便练手了,哈哈。
我在我电脑上测试了下,没有问题,如果你还有问题请追问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询