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

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

1
複数行のawkスクリプトをシェルスクリプトに統合する方法
私の質問は 「グループ番号」に保持されている3桁の数字を抽出するためにファイルを解析する方法 私は単一のシェルスクリプトに一連のコマンドを統合しようとしています 欧州規格を解析してテストシーケンスを抽出する テキストエンコーディングをutf8に変換します 上記の投稿で私に提供されたawkルーチンで結果を処理します。 コンテンツを宛先ファイルに保存する 以下のスクリプトを暫定的に作成しました。私は達成することができるよstep 1とstep 4、どちらもstep 2もstep 3。中間(一時)ファイルを作成する必要があるのだろうか。中間ステップの出力を変数に保存しようとしましたが、成功しませんでした。どんな助けも、起こりうる間違いとこれを行う最善の方法に関する助けになるでしょう。 #!/bin/bash # creating the Latex code for a test procedure awkcommand= "/usr/bin/awk ' $1 == "Group" {printf("\\section{%s %d}\n", $1, $2); next} { title = sep = "" for (i=1; i<=NF; i++) if ($i ~ /^[0-9][0-9][0-9]$/) { printf("\\subsection{%s} \n\\TestDetails{%d}\n", …
12 shell-script  awk 

2
Redhatでデーモンとしてシェルスクリプトを実行するにはどうすればよいですか?
シェルスクリプトがあります。これは基本的に、ログを記録する1つのライナーです。これをinitスクリプトから実行しようとしています。Redhatが使用可能になっていないように見えるため、daemon内部で関数を使用し/etc/init.d/functionsて実行していstart-stop-daemonます。initスクリプト(/etc/init.d/script start)を呼び出すと、プロセスを完了して実行中のままにするのではなく、フォアグラウンドに留まります。このスクリプトをデーモン化する適切な方法は何ですか? 実行するスクリプト: # conf file where variables are defined . /etc/script.conf echo "Starting..." | logger -i echo "Monitoring $LOG_LOCATION." | logger -i echo "Sending to $MONITOR_HOST:$MONITOR_PORT." | logger -i tail -n 1 -F $LOG_LOCATION | grep WARN --line-buffered | /usr/bin/nc -vv $MONITOR_HOST $MONITOR_PORT 2>&1 | logger -i 初期化スクリプト: #!/bin/bash …

2
まだ作成されていないファイルのテーリングを開始する方法
私はtail、ジョブの進行状況をディスクに書き込むことがわかっているジョブの進行状況を監視するために使用します。ほとんどの場合、実行を開始する前に作成するファイルを知っています(ジョブはスーパーコンピューターのスケジューラーによってディスパッチされます) tailこれらのファイルを作成する前に、それらのファイルへの方法はありますか?競合状態を回避し、かつ/またはジョブがディスクに書き込む方法とタイミングについて推測しながら、そのようにしたいと思います。

4
シェルからトップレベルのCPU統計を受信するにはどうすればよいですか?
使用済みのCPUの正確な読み取り(%)を取得しようとしていますtop。これは、テストのために実行しているコマンドです。 top -n1 | awk '/Cpu\(s\):/ {print $2}' これは返します: 10.7%us, これは、私が欲しい適切なデータです。ただし、コマンドを実行するたびに、システムに異なる負荷を適用している場合でも、同じ出力が得られます(もちろんhtop、使用法が異なることを教えてくれます)。起動するたびにtop、CPU使用率は同じようです。数フレーム後に適切な値が得られます。 この方法でtopの出力を解析できるようには思えないので、シェルからの正確な読み取りを可能にする他の信頼できるアプリケーションを探しています。htopコアごとの測定値を取得する方法が大好きです。 私が試したiostatし、mpstat彼らは不正確で、「変化に遅い」値を与えるように見えます。
12 shell-script  cpu  top  htop 

2
多くの(空白の)画像ファイルを生成する方法は?
テストのために、定義されたサイズ1000x706で1700個のjpgイメージ(空白も含む)をすばやく作成する必要があります。シェルスクリプトまたはプログラム(ImageMagickなど)でこれを実行できるかどうかは疑問です。私は、彼らが呼ばれたいですimg_0.jpg、img_1.jpg... 誰かが簡単な解決策を知っていますか?

7
シェル引数を逆順で出力します
私は少し立ち往生しています。私の仕事は、3番目と4番目を除いて、スクリプトへの引数を逆の順序で出力することです。 私が持っているのはこのコードです: #!/bin/bash i=$# for arg in "$@" do case $i in 3) ;; 4) ;; *) eval echo "$i. Parameter: \$$i";; esac i=`expr $i - 1` done 私はeval(PHPへの挨拶)が嫌いなので、それなしで解決策を探していますが、それを見つけることができません。 引数の位置を動的に定義するにはどうすればよいですか? PS:いいえ、宿題ではありません。試験のシェルを学んでいるので、古い試験を解決しようとしています。

3
無料のシェルアカウントは安全ですか?
shellmix.comのようなものによって提供される無料のシェルアカウントがどれほど安全かを特定しようとしています。私は自分で使ったことはありませんが、シェルプログラミングの学習に興味がある人に提案したいと思います。この目的で使用しても安全ですか?何に注意すればいいですか?

3
シェルでmd5ハッシュ結果をパイプする方法
結果md5sumを別のコマンドにパイプする簡単な方法を探しています。このようなもの: $echo -n 'test' | md5sum | ... 私の問題はmd5sum、文字列のハッシュだけでなく、入力が標準入力からのものであることを示すハイペンも出力することです。manファイルをチェックしましたが、出力を制御するフラグが見つかりませんでした。

2
./executable:バイナリファイルを実行できません
私は自分でそれを実行するためにサーバーにsshするときにうまく機能するスクリプトを持っていますが、継続的統合サーバーであるHudsonがそれを実行するときに問題があります。 組み込みLinuxシステム(ターゲット)でテストを自動化しています。ターゲットは、シリアル経由でサーバーA(RHEL 5)に接続され、minicomで操作されます。サーバーB(FC 12)は、ターゲットで実際に実行されるテストをビルドし、サーバーAにSSH接続できます。サーバーC(RH)は、サーバーBをスレーブとして、Hudsonをホストします。 実際のターゲットで必要なことをすべて実行するために、runscript(http://linux.die.net/man/1/runscript)スクリプトを作成しました。イメージを起動し、サーバーBからディレクトリをマウントして、テストを実行します。サーバーBのbashスクリプトは、いくつかのコンパニオンアクションと共にrunscriptスクリプトを使用してminicomを呼び出します。私は使用するサーバーBにbashスクリプトがあります ssh -t -t ServerA bashScript.sh これらのテストをターゲットで実行するために。私はサーバーCにいます。サーバーBにsshし、runscriptでminicomを実行するサーバーAにsshするスクリプトを実行することで、これらのテストを実行できます。ふう レビューする: サーバーA:ハドソンはスレーブメカニズムを使用してサーバーBにsshします。 サーバーB: kickOffTests.sh回線ありssh -t -t ServerA runTests.sh サーバーA: runTests.sh呼び出すperlスクリプトを呼び出しますminicom -S my.script ttyE1 起動後のターゲット:テストがあるサーバーBからディレクトリをマウントし、そのディレクトリに入ります。コンパイルされたC実行可能ファイルであるテストを実行する、さらに別のbashスクリプトを呼び出します。 とき今、私はこれらのスクリプトのいずれかの自分自身を実行し、彼らは、彼らが必要何。しかし、ハドソンは、それは、Cの実行ファイルを起動します「さらに別のbashスクリプト」内の行文句minicomのセッションでオーバー、同じことをしようとする./executableと、./executable: cannot execute binary file Linuxについて学ぶべきことはまだたくさんありますが、この問題はHudsonがコンソールに接続していないことが原因だと推測しています。Hudsonがそのスレーブを制御するために何をするのか、正確にはわかりません。export TERM=consolekickOffTests.shを実行する直前に構成内の行を使用しようとしましたが、問題は残ります。 誰が私に何が起こっているのか、どうすればそれを修正できるのかを説明できますか?この方程式からサーバーを削除することはできません。方程式からミニコムを取り出すことは可能かもしれませんが、それはこのプロジェクトに未知の時間を追加しますので、私はすでに持っているものを使用するソリューションを大いに望みます。

3
パイプラインをファイルの終わりまで待機させるか、エラー後に停止させる方法は?
パイプシェナンガンに関するこのビデオを見て、次のコマンドを試しました。 man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura - それは基本的にユーザーがそれらの1つを選択するためにdmenuにマンページのリストを印刷し、次にxargsを使用して実行しman -Tpdf %(xargsの入力からgitのマンページのpdfを標準出力して)、pdfリーダーにPDFを渡します(zathura )。 問題は、(ビデオで見られるように)dmenuで1つのマンページを選択する前でもpdfリーダーが起動することです。Escをクリックしてnoneを選択すると、pdfリーダーは開いたままで、ドキュメントがまったく表示されません。 入力がファイルの終わりに達したとき、または入力をまったく受け取ったときにのみPDFリーダー(およびパイプチェーン内の他のコマンド)を実行するにはどうすればよいですか?または、チェーンされたコマンドのいずれかがゼロ以外の終了ステータスを返した後にパイプチェーンを停止するにはどうすればよいですか(dmenuがオプションを選択しないためのエラーを返す場合、次のコマンドは実行されません)?


2
set -uの使用が期待どおりに機能しない
setスクリプトでさまざまなオプションを効率的に使用する方法を学習してset -uいて、変数が正しく設定されていない場合(ユーザーの削除など)にスクリプトを終了するのに最適なようです。マニュアルページによると、次のことset -uをset -eしています... -e Exit immediately if a command exits with a non-zero status. -u Treat unset variables as an error when substituting. この機能をテストするためのテストスクリプトを作成しましたが、期待どおりに動作していないようです。おそらく、誰かが私の問題を私に説明し、どこで私が誤解しているのでしょうか?テストスクリプトは次のとおりです。ありがとうございました。 set -e set -u testing="This works" echo $? echo ${testing} testing2= echo $? echo ${testing2} testing3="This should not appear" echo $? echo ${testing3} スクリプトが0と"これで機能します"を表示し、${testing2}設定されていないため失敗することを期待しています。 代わりに私が表示されています0をし、「この作品は」、で続く0、その後、0は …

1
「待機&」(「待機アンパサンド」)は、便利な(bash)シェル/シェルスクリプトのイディオムまたはテクニックですか?
GNU「bash」シェルを実行しているLinuxマシン用のシェルスクリプトを「継承」しました。1つの特定のケースでは、マシンはGNU bashバージョン2.0.5bを実行します これらのスクリプトの1つにはwait &、forループの「for line」の一部として(「アンパサンドを待つ」)命令があります。一見すると、それは奇妙な/興味深いイディオムのようですが、私のWeb検索で関連性のあるものは何も返されませんでした。man waitは、「BASH_BUILTINS」(「BASH BUILTINS COMMAND」)のマンページを示しています。 wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job spec­ification; if a job spec is given, all processes in that job's pipeline are waited for. If n is not given, …


3
コマンドエラーでbashスクリプトの関数を自動実行する方法はありますか?
私は一連のコマンドを実行する必要があるシェルスクリプトを書いており、すべてのコマンドは以前のすべてのコマンドに依存しています。コマンドが失敗した場合、スクリプト全体が失敗し、exit関数を呼び出します。各コマンドの終了コードを確認することはできましたが、有効にできるモードがあるかどうか、またはbashに自動的にそれを実行させる方法があるかどうか疑問に思っています。 たとえば、次のコマンドを実行します。 cd foo || myfunc rm a || myfunc cd bar || myfunc rm b || myfunc これらのコマンドのいずれかが失敗した場合にmyfuncを呼び出す必要があることを、これらのコマンドを実行する前に何らかの方法でシェルに通知できる方法はありますか? cd foo rm a cd bar rm b

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