Linux 验证.sh文件头

Linux 验证.sh文件头,linux,bash,shell,sh,linux-mint,Linux,Bash,Shell,Sh,Linux Mint,如何验证指定目录中以.sh结尾的每个.sh文件,以确保第一行是#/垃圾桶/狂欢节 我希望每个文件的输出为filename.sh有效,或者filename.sh缺少头可能类似 awk'FNR==1{if($0==“#!/bin/bash”){ 打印文件名“有效” }否则{ 打印文件名,“缺少标题” } 下一文件 }“*”sh 还可以考虑纯bash解决方案。它不调用任何其他进程 请注意,有效文件的#之间可能包含空格和/bin/bash #! /bin/bash PAT="^#! */bin

如何验证指定目录中以.sh结尾的每个.sh文件,以确保第一行是#/垃圾桶/狂欢节

我希望每个文件的输出为
filename.sh有效
,或者
filename.sh缺少头

可能类似

awk'FNR==1{if($0==“#!/bin/bash”){
打印文件名“有效”
}否则{
打印文件名,“缺少标题”
}
下一文件
}“*”sh

还可以考虑纯bash解决方案。它不调用任何其他进程

请注意,有效文件的
#之间可能包含空格
/bin/bash

#! /bin/bash
PAT="^#! */bin/bash"
for file in *.sh ; do
    line=
    read line < $file
    if [[ "$line" =~ $PAT ]] ; then
        echo "$file is valid"
    else
        echo "$file is missing the header"
    fi
done

谢谢你的帮助
PAT="#! *(/bin/bash|/bin/sh)"