より高いレベルのフォルダから実行可能ファイルを呼び出す非常に簡単なスクリプトを作成しようとしています。コンソールにコマンドを入力した場合は、次のように入力しました。
../filenamehere {options} {parameters}
同時に、複数のプロセスを実行するために.shファイルで同じことをしようとしたときに、次のように書こうとします。
../filename {options} {parameters} &
../filename {options2} {parameters} &
../filename {options3} {parameters} &
../filename {options4} {parameters} &
次に、ファイルを実行するには、次のように入力します。
chmod a+x script_file.sh
./script_file.sh
それ以来、「コマンドが見つかりません」というエラーが3回発生しました。これは、私の4つのコマンドのうち1つが実行されたが、残りの3つは実行されなかったという意味だと思います。 .shファイルに入力したのと同じコマンドをコンソールに直接入力しても問題は発生しません。このファイルを実行するにはどうすればよいですか?
ベストアンサー1
シンボリックリンクを使用していますか?
信頼できるスクリプトを作成するには、"dirname $ 0"を使用しないでください。呼び出しコマンドに関連する$ 0コマンドに関連しています。ディレクトリを参照するには、「readlink -f $0」を使用します。
basedir="$(dirname $(readlink -f $0))"
$basedir/../filename {options} {parameters} &
readlink -f
リンク、作業ディレクトリなどに関係なく、スクリプトの絶対パスを提供します。