cut -c が .sh ファイルで動作しない

cut -c が .sh ファイルで動作しない

次のコマンドを試しました

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 ファイルでは完璧に機能します。主な目的は、ファイルが実際に bash bin スクリプトであるかどうかを確認するために、スクリプト "#!/bin/bash" の最初の 11 文字を抽出することです。

答え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

関連情報