タグ付けされた質問 「exit」


4
すでに実行中のprog1に「&& prog2」を何らかの方法で追加できますか?
ほとんどのシェルは次のような機能を提供&&し、;特定の方法でのコマンドの実行チェーンに。しかし、コマンドが既に実行されている場合、最初のコマンドの結果に応じて、どうにかして実行する別のコマンドを追加できますか? 私が走ったと言う $ /bin/myprog some output... でも本当に欲しかった/bin/myprog && /usr/bin/mycleanup。myprogあまりにも多くの時間が失われるため、すべてを強制終了して再起動することはできません。必要に応じてCtrl+ Zとfg/ を使用できbgます。これにより、別のコマンドにチェーンできますか? 私はほとんどbashに興味がありますが、すべての一般的なシェルの答えは大歓迎です!
87 bash  shell  process  exit 

4
プロセスが終了したときのデフォルトの終了コード?
SIGINTまたはのようなハンドル可能なシグナルでプロセスが強制終了されたSIGTERMが、シグナルを処理しない場合、プロセスの終了コードはどうなりますか? 次のようなハンドルできない信号はSIGKILLどうですか? 私が知ることができることから、SIGINTおそらくプロセスを終了すると終了コード130が発生しますが、それはカーネルまたはシェルの実装によって異なりますか? $ cat myScript #!/bin/bash sleep 5 $ ./myScript <ctrl-c here> $ echo $? 130 他の信号をテストする方法がわかりません... $ ./myScript & $ killall myScript $ echo $? 0 # duh, that's the exit code of killall $ killall -9 myScript $ echo $? 0 # same problem

4
なぜ(exit 1)スクリプトを終了しないのですか?
スクリプトがありますが、必要なときに終了しません。 同じエラーのスクリプトの例は次のとおりです。 #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' 私は出力を見ると仮定します: :~$ ./test.sh 1 :~$ しかし、私は実際に見ます: :~$ ./test.sh 1 2 :~$ ()何とか連鎖するコマンドは、スコープを作成しますか?exitスクリプトではない場合、何が終了しますか?

1
常に失敗して終了する標準コマンドはありますか?
失敗するコマンドでスクリプトをテストしたい。悪い引数を持つ既存のコマンドを使用できます。また、すぐに失敗して終了する簡単なスクリプトを書くこともできます。これらはどちらも簡単に実行でき、動作しますが、この目的のための標準コマンドがあれば、代わりにそれを使用したいと思います。

4
子プロセスが親と一緒に死ぬUNIXバリアントはありますか?
Linuxカーネルの動作をかなり長い間研究してきましたが、次のことが常に明らかでした。 プロセス・ダイは、そのすべての子がバックに与えられている場合にはinit、プロセス(PID 1)彼らは最終的に死ぬまで。 しかし、最近、カーネルについて私よりもはるかに多くの経験を持っている人が私に言った: プロセスが終了すると、そのすべての子も死にます(使用NOHUPした場合を除き、子はに戻りますinit)。 今、私はこれを信じていませんが、私はそれを確かめるためにまだ簡単なプログラムを書きました。sleepすべてがプロセスのスケジューリングに依存しているため、テストに時間()に依存するべきではないことを知っていますが、この単純なケースでは、それで十分だと思います。 int main(void){ printf("Father process spawned (%d).\n", getpid()); sleep(5); if(fork() == 0){ printf("Child process spawned (%d => %d).\n", getppid(), getpid()); sleep(15); printf("Child process exiting (%d => %d).\n", getppid(), getpid()); exit(0); } sleep(5); printf(stdout, "Father process exiting (%d).\n", getpid()); return EXIT_SUCCESS; } これはプログラムの出力であり、話すpsたびに関連する結果がありますprintf: $ ./test & …
41 process  init  exit  fork 

6
サブシェルからシェルスクリプトを終了する
このスニペットを検討してください。 stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } 通常、funcが呼び出されると、スクリプトが終了します。これは意図した動作です。ただし、次のようなサブシェルで実行される場合 result=`func` スクリプトは終了しません。つまり、呼び出しコードは毎回関数の終了ステータスをチェックする必要があります。これを回避する方法はありますか?これは何のset -eためですか?

5
一致しない場合にgrepが終了しないようにする
このスクリプトは「後」をエコーし​​ません。 #!/bin/bash -e echo "before" echo "anything" | grep e # it would if I searched for 'y' instead echo "after" exit また-e、shebang行のオプションを削除した場合も同様ですが、エラーが発生した場合にスクリプトが停止するように、それを保持したいです。grepが一致しないことをエラーと見なすことはありません。突然終了するのを防ぐにはどうすればよいですか?


3
サブシェルにいるかどうかを検出するにはどうすればよいですか?
exitビルトインの機能を置き換える関数を作成して、端末を終了できないようにしています。 SHLVL環境変数を使用しようとしましたが、サブシェル内では変更されないようです: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 私の機能は次のとおりです。 exit () { if [[ $SHLVL -eq 1 ]]; then printf '%s\n' "Nice try!" >&2 else command exit fi } exitただし、これによりサブシェル内で使用することはできません: $ exit Nice try! $ (exit) Nice try! 私がサブシェルにいるかどうかを検出する良い方法は何ですか?
24 bash  shell  exit  subshell 


2
bashスクリプトの最後の終了コード
bashスクリプトの最後にある終了コードの意味について混乱しています:終了コード0は正常に終了したことを意味し、終了コード番号(もっと間違えなければ127)があることを知っています。 私の質問は、スクリプトの最後に終了コード0が表示される場合、スクリプトが失敗した場合や別の意味がある場合でも、終了コードを強制的に0に設定することです。

4
letまたはexprが0と評価されると、bash -eは終了します
-eを設定するbashスクリプトがあるので、スクリプトは終了ステータス!= 0で終了します。 変数に割り当てられた基本的なシェル算術演算を実行しようとしていますが、式が0に等しい場合があり、letまたはexprコマンドの終了ステータスが「1」になります。 以下に例を示します。 #!/bin/bash -ex echo "Test 1" Z=`expr 1 - 1` || true echo "Z will print" let "A=4 - 4" echo "A WILL NEVER PRINT $A" Y=`expr 1 - 1` echo "Y WILL NEVER PRINT $Y" X=$(expr 2 - 2) echo "X WILL NEVER PRINT $X" 出力は次のとおりです。 …

7
1つのコマンドですべてのSSH接続を終了し、PuTTYを閉じます
すべてのSSH接続をバッ​​クアウトし、「ワンショット」でPuTTYを閉じる方法はありますか?私はWindows 7で働いており、PuTTYを使用してさまざまなLinuxホストにSSHで接続しています。 私が自分自身を働かせている方法の例: SSH to host1 with PuTTY... banjer@host1:~> #...doin some work...ooh! need to go check something on host8... banjer@host1:~> ssh host8 banjer@host8:~> #...doin some work...OK time for lunch. lets close putty... banjer@host8:~> exit banjer@host1:~> exit Putty closes. 上記のように、host8からPuTTYを一度に閉じる方法はありますか?場合によっては、最大5または10ホストまでのホストを見つけます。XをクリックしてPuTTYウィンドウを閉じることができますが、exitコマンドを使用してSSH接続が適切に閉じられるようにしたいと思います。また、怠を増やす方法に関するヒントを求めていることに気づきました。私はそれを「どうすればもっと効率的にできるか」と書き留めます。
18 linux  ssh  windows  putty  exit 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.