私は自分のマシンに座って特定のフォルダ内のファイルを待ち受け、次にアプリケーションを起動する関数を実行するスクリプトを作成しようとしています。以下のコードでは、 "java -jar Minecraft.jar"という行を除いてすべてが実行されます。私は間違いがない。私はNotifyステートメントから通知を参照します。他の誰かが私にある方向性を与えることができたら、私はそれを高く評価します。 Bash関数の一部がLinux上で実行されない
はありがとうコード:
#!/bin/bash
Launch_Minecraft() {
echo "Starting Minecraft..."
cd .. &
cd Games &
cd Minecraft &
notify-send "Starting Minecraft"
java -jar Minecraft.jar &
rm /home/MyFolder/Dropbox/Alexa/launchminecraft.txt &
cd /home/MyFolder/Desktop
}
for ((; ;))
do
[ -f /home/MyFolder/Dropbox/Alexa/launchminecraft.txt ] && Launch_Minecraft|| echo "Listening... [ hit CTRL+C to stop]"
done
これは私の問題かもしれません。私は、bashの "&"記号が操作を実行し、アプリケーションが終了するのを待つのではなく続けることを理解していました。この例では、ゲームを終了して続行するのを待つ代わりに、ゲームを開始してスクリプトを続行したいと考えています。 –
これは間違いありませんが、作業ディレクトリを変更しようとしても、その変更が有効になるのを待たずに移動しています。 (また、バックグラウンドは別のプロセスで実行されるので、作業ディレクトリの変更はそれ以降のコマンドには適用されません) – chepner