我尝试过以下命令
cut -c-11 ifshell.sh
cat ifshell.sh | cut -c-11 ifshell.sh
cat ifshell.sh | awk '{print $1} | cut -c-11 ifshell.sh
但每次我都得到 .sh 文件的完整内容。这些命令在 .txt 文件上完美运行。主要目标是提取脚本“#!/bin/bash”的前 11 个字符,以检查该文件是否确实是 bash bin 脚本。
答案1
您还可以使用标准 ̀file
命令:
[PRD][]user@localhost:~ 17:21:30
$ head -n 1 setproxymkt.sh
#!/bin/bash
[PRD][]user@localhost:~ 17:21:38
$ file setproxymkt.sh
setproxymkt.sh: Bourne-Again shell script, ASCII text executable
答案2
以下内容可能更适合您想要实现的目标:
# #// FILE could be a for-loop as well for example.
FILE="bash_scropt.sh" ;
if grep '#!/bin/bash' $FILE 1>/dev/null ; then
printf "$FILE bash-script\n" ;
else
printf "> $FILE -- NOT bash\n" ;
fi ;
您还可以将其与@netmonk建议混合使用,其中头部的 grep 会更简洁,例如:
FILE="bash_scropt.sh" ; if head -n 1 $FILE | grep '#!/bin/bash' 1>/dev/null ; then printf "$FILE bash-script\n" ; else printf "> $FILE -- NOT bash\n" ; fi