「sample」という名前のフォルダーがあり、その中に3つのファイルがあります。サンプルフォルダー内のこれらのファイルを読み取り、curlを使用してHTTPサイトに投稿するシェルスクリプトを書きたいのですが。 フォルダ内のファイルを一覧表示するために、次のように記述しました。 for dir in sample/*; do echo $dir; done しかし、それは私に次の出力を与えます: sample/log sample/clk sample/demo その中に親フォルダを付けています。次のように出力したい(親フォルダー名なし) log clk demo どうすればよいですか?
trapたとえばhttp://linuxcommand.org/wss0160.php#trapで説明されているように使用してctrl-c(または類似のもの)をキャッチし、終了する前にクリーンアップすると、返される終了コードが変更されます。 これはおそらく現実の世界では違いはありません(たとえば、終了コードは移植可能ではなく、その上に、プロセスが終了したときのデフォルトの終了コードで説明されているように常に明確であるとは限らないためです)。それでも、本当にそれを防ぎ、代わりに中断されたスクリプトのデフォルトのエラーコードを返す方法はありませんか? 例(bashですが、私の質問はbash固有のものと見なすべきではありません): #!/bin/bash trap 'echo EXIT;' EXIT read -p 'If you ctrl-c me now my return code will be the default for SIGTERM. ' _ trap 'echo SIGINT; exit 1;' INT read -p 'If you ctrl-c me now my return code will be 1. ' _ 出力: $ ./test.sh …
いくつかのコマンドを並行して実行したい。これらのコマンドがすべて終了したら、次のコマンドを開始します。私は次のアプローチがうまくいくと思いますが #!/bin/bash command1 & command2 & command3 && command4 しかし、そうではなかった。command4最初の3つのコマンドすべてが完全に終了したときに実行する必要があります。