別のshファイルからshファイルを実行しようとすると問題が発生します。

別のshファイルからshファイルを実行しようとすると問題が発生します。

次のスクリプトがあります。

#!/bin/bash

if test -f "/path/pycharm.sh"; then sh ./pycharm.sh;
fi

走ろうとしています。pycharm.shBashファイルで、ファイルに必要なすべての権限を再確認しました。残念ながら、実行するたびに次のメッセージが表示されます。

./pycharm.sh を開けません。

答え1

./スクリプトの実行に使用しない一般的に言えば、プログラム(スクリプトまたはコンパイルされたバイナリ)を実行するために使用されます。 現在のディレクトリに。 2番目のスクリプトが存在する場合は、代わり/path/pycharm.shに実行する必要があります。/path/pycharm.sh./pycharm.sh

答え2

シェルスクリプトは別のディレクトリにあります。絶対パスを使用します。

sh /path/pycharm.sh

答え3

エラーは非常に明確です。

  • 指定されたパスに存在しない
  • 開く権限がありません。

相対パスを使用しているので、最初のパスにお金を投資します。 2番目のパスのフルパスを指定するとpycharm.sh正常に動作します。

答え4

私が何かを見逃しているのですか?それとも、最初に文字列が存在するかどうかを確認する文字列を作成する予定ですか?その場合、正しいアプローチは次のとおりです。

#!/bin/bash

if test -f "/path/pycharm.sh"; then /path/./pycharm.sh;
fi

関連情報