タグ付けされた質問 「shell-script」

シェルスクリプト、シェルによって解釈される実行可能ファイル(bash、zshなど)に関する質問。

3
別のスクリプトのスクリプトを呼び出しますが、子がexitを呼び出した場合は親を終了しません
first.sh: #! /bin/ksh echo "prova" . ./second.sh echo "ho lanciato il secondo" . ./third.sh echo "ho lanciato il terzo" second.sh: echo "sono nel secondo script" dosomething1 exit $? 場合はsecond.sh検出状況とエラーして終了-9、first.sh常に終了します。子シェルが終了した場合、最初のシェルを終了しないようにするにはどうすればよいですか? 編集できませんsecond.sh。

2
スクリプトを実行するショートカットキーを割り当てる
画面の明るさを変更するスクリプトを作成しました。 テキストモードで作業していて、明るさを変更するキーボードのショートカットキーが機能しない場合に便利です。 それは例えば、単なるショートカットとして、キーボードの一部のキーを押すことで、このスクリプトを実行することは可能ですかCtrl+ Alt+ F7?

3
何かをするために他のマシンにログオンするbashスクリプトを書く方法は?
bashスクリプトを書くことは可能ですか? マシンAから起動し、sshによって別のマシンBにログインします(マシンAとBの両方がLinuxマシンです)。 いくつかのファイルをマシンBにコピーします これらのマシンで特定のpythonスクリプトを実行します。 結果をマシンAに転送します マシンBからログオフします。 これは技術的に可能ですか?
11 bash  ssh  shell-script 

2
複数行コマンド:1行をコメント化
(読みやすくするために)パラメータが多いコマンドのスクリプトでは、次の形式を使用します。 docker run \ --rm \ -u root \ -p 8080:8080 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$HOME":/home \ jenkinsci/blueocean しかし、これらのパラメーターの1つを次のようにコメントアウトしたい場合があります。 # -p 8080:8080 EOLはリターンとして解釈され、コマンドが失敗するため、これは機能しません。これも試しました: \ # -p 8080:8080 これも機能しませんでした。 質問:パラメーターをコメントアウトする方法はあるので、それ自体は別の行にありますが、スクリプトを実行できますか?

4
bash関数での暗黙の戻り?
次のようなbash関数があるとします。 gmx(){ echo "foo"; } この関数は暗黙的にechoコマンドの終了値を返しますか、それともreturnを使用する必要がありますか? gmx(){ echo "foo"; return $? } 私はbashの動作方法を想定しています。bash関数の最後のコマンドの終了ステータスは「返される」ものですが、100%確実ではありません。

1
SIGINTまたはSIGTERMが子プロセスではなく親スクリプト自体に送信されるときにコマンドまたは関数を実行する
私がこれを持っているとしましょう script.sh #!/bin/bash exit_script() { echo "Printing something special!" echo "Maybe executing other commands!" kill -- -$$ # Sends SIGTERM to child/sub processes } echo "Some other text" #other commands here sleep infinity 受け取ったときにscript.sh関数を実行したいまたは 例:exit_scriptSIGINTSIGTERM killall script.sh # it will send SIGTERM to my script スクリプトでこれを実行したい exit_script() { echo "Printing …


1
「<host>への共有接続が閉じられました」というメッセージを回避する
私は多くのdrupalサイトを管理していて、drushを使用していくつかのものを自動化しようとしています。Drush runは、サイトエイリアスの設定で指定されたオプションを使用して、ssh経由でリモートホストのdrushをローカルに呼び出します。私はこれらの呼び出しをかなり多くしているので、高速化するために、次のようにssh configで永続的なssh接続を使用します。 Host * # see http://www.revsys.com/writings/quicktips/ssh-faster-connections.html ControlMaster auto ControlPath ~/tmp/%r@%h:%p ControlPersist 3600 スピードアップしましたが、次のようなメッセージも表示されます。 $ drush @alias drupal-directory webform /var/local/www/example.com/htdocs/sites/all/modules/contrib/webform Shared connection to 12.34.56.78 closed. 共有接続に関するメッセージは、私が欲しい出力と一緒にstdoutにあります(真剣に?なぜstderrではないのですか?)。そのため、スクリプトで出力をキャプチャしようとすると問題が発生します。 directory=$(drush @$alias drupal-directory $module) マスター接続は既に開いていたはずですが、閉じられているようには見えません。だから、おそらくdrushはこの新しい接続を明示的にマスター接続にして閉じていますか?いずれにせよ、接続の切断に関するメッセージを抑制する方法はありますか? [この問題はdrupal / drushのコンテキストにありますが、基本的にはsshに関するものだと思います。これは正しいサイトですか?] 編集: この問題は-t、ssh のオプションが使用されている場所に固有のようです。svnパスワードはさまざまな時点で入力する必要があり-t、パスワードプロンプトが表示されないため、これを使用しています。これらのプロンプトが失われるのを防ぐ別の方法があるのでしょうか?

2
矢印キー/ Enterメニュー
ユーザーが矢印キーを使用してハイライトカーソルを移動し、Enterキーを押して1つを選択する3つのオプションを表示するシェルスクリプトでメニューを作成する方法

1
tcpdumpキャプチャのマルチキャスト結合の作成
特定のマルチキャストトラフィックをキャプチャするLinuxシェルスクリプトを書きたいのですが。特定のように、1つの特定のマルチキャストグループ/ポートのすべてのトラフィックを含むpcapファイルを作成します。 トラフィックを表示するために使用しているコマンドラインは次のとおりです。 tcpdump -nnXs 0 -i eth1 udp port 22001 and dst 233.54.12.234 これは、そのグループへのマルチキャストサブスクリプションがすでに確立されている限り、正常に機能します。たとえば、これを別のコンソールで実行した場合: mdump 233.54.12.234 22001 10.13.252.51 tcpdumpパケットが表示されます。mdumpが実行されていない場合、tcpdump何も表示されません。 キャプチャを開始する前にこれらのマルチキャスト結合を確立する標準のlinux-y方法はありますか?mdumpこれらの結合を確立するために使用することもできますがmdump、グループ上のすべてのデータを処理するので、それは無駄に見えますが、私はそれを捨てるつもりです。 私の特定の環境のため、インターフェースを無差別モードにすることはお勧めできません。実際には禁止されているかもしれません。


5
終了コマンドの終了コードをキャプチャする
私はこれをbashスクリプトに入れています: exit 3; exit_code="$?" if [[ "$exit_code" != "0" ]]; then echo -e "${r2g_magenta}Your r2g process is exiting with code $exit_code.${r2g_no_color}"; exit "$exit_code"; fi exitコマンドの直後に終了するように見えますが、これは理にかなっています。私はすぐに終了せずに終了コードを提供できるいくつかの簡単なコマンドがあるのだろうかと思っていましたか? 私は推測するつもりでした: exec exit 3 しかし、エラーメッセージが表示されますexec: exit: not found。私に何ができる?:)

4
文字列変数の行数をPOSIXで数える方法は?
私はこれをバッシュでできることを知っています: wc -l &lt;&lt;&lt; "${string_variable}" 基本的に、私が見つけたものはすべて&lt;&lt;&lt;Bashオペレーターに関係していました。 しかし、POSIXシェルで&lt;&lt;&lt;はは定義されておらず、何時間も別のアプローチを見つけることができませんでした。これには簡単な解決策があると確信していますが、残念ながら今のところ見つかりませんでした。

2
LinuxでSunOSの `find`コマンドに代わるものはありますか?
findLinux のコマンドには、findSunOSまたはSolarisのコマンドと比較して、多くのオプションがあります。 find次のようなコマンドを使用したい: find data/ -type f -name "temp*" -printf "%TY-%Tm-%Td %f\n" | sort -r Linuxマシンでは完全に正常に動作します-printfが、SunOSマシンでは同じコマンドにオプションがありません。出力を"%TY-%Tm-%Td %f\n"フォーマットでカスタマイズしたい。 SunOSの代替案を提案してください。

6
bash-ファイルの各行をペアにします
この質問は、これとこの質問に強く関連しています。複数の行を含むファイルがあり、各行はファイルへのパスです。次に、各行を(それ自体ではなく)それぞれ異なる行とペアにします。また、私の目的でA Bはペアはペアと等しいB Aので、これらの組み合わせの1つだけを作成する必要があります。 例 files.dat 短縮表記でこのように読みます。各文字はファイルパスです(絶対または相対) a b c d e 次に、私の結果は次のようになります。 a b a c a d a e b c b d b e c d c e d e できればbashでこれを解決したいと思います。他の質問とは異なり、私のファイルリストはかなり小さい(約200行)ため、ループとRAM容量を使用しても問題はありません。

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