これは有効なシェバン行ですか?

これは有効なシェバン行ですか?

UNIX について次の質問があります。

トップラインがなくなったら他に何が必要か

#!\bin\awk -f
  to make it run as a command?

スクリプトの名前が何であれ、それを実行するには chmod を使用して権限を与える必要があると思います。

答え1

「#!」の最初の行は、実行されるプログラムへの完全なパス名になります。

Linux のパス名では、ディレクトリ間にスラッシュが入ります。

例:

#!/bin/awk -f

または

#!/bin/bash

または

#!/usr/bin/perl

最初のスクリプトは を使用してスクリプト プログラムを実行しawk、2 番目は を使用してスクリプト プログラムを実行しbash、3 番目は を使用してスクリプト プログラムを実行しますperl

また、次のコマンドでファイルを実行可能にする必要があります。

$ chmod +x myscript.sh

答え2

#!\bin\awk -fは有効なシェバン行ですが、役に立つものではありません。これは、ファイルが\bin\awk現在のディレクトリで呼び出されるプログラムによって解釈される必要があることを宣言します。したがって、質問に文字通り答えると、そのファイルをコマンドとして実行するには 2 つの方法があります。

  • おそらく awk の何らかのバージョンをコピーまたはリンクして、現在のディレクトリにというファイルを作成します\bin\awk。また、スクリプトを実行可能にする必要があります。

    ln -s /bin/awk '\bin\awk'
    chmod +x /path/to/script
    /path/to/script
    
  • awk を明示的に呼び出します。

    awk -f /path/to/script
    

ファイルの変更が許可されている場合は、意味が通るようにシェバン行を編集する必要があります。つまり、バックスラッシュをスラッシュに置き換えます。そして、ファイルを実行可能にします (これは間違いなく意図された答えですが、単にそれを行うだけでは正しい答えにはなりません)。

関連情報