control-flow

削除および再生成されるログファイルを継続的に追跡する方法は?
control-flow

削除および再生成されるログファイルを継続的に追跡する方法は?

プログラムが実行されるたびに削除され、再生成されるログファイルから情報を抽出する必要があります。ファイルが存在することを(再度)検出した後、tail正規表現で使用したいと思います。 正規表現は複数回一致しますが、結果は常に同じです。一度だけ印刷してからファイルが再生成されたら、ウォッチ式を返したいと思います。 ファイル生成を検出する方法を見てみました。パスするのも一つの方法inotifywaitただし、これを行うには別々のパッケージをインストールする必要があります。 stderrおそらくより簡単なアプローチは、末尾のファイルを削除して作成するときに後続の印刷...

Admin

bashスクリプトの&&と改行文字は同じですか?
control-flow

bashスクリプトの&&と改行文字は同じですか?

bashスクリプトでは、改行文字が機能的に100%等しいかどうか疑問に思います&&。 たとえば、 #!/bin/bash 7z x "${file}" mv "${file}" "${new_file}" そして #!/bin/bash 7z x "${file}" && mv "${file}" "${new_file}" GNU bash、バージョン 5.1.16(1)-リリース(x86_64-pc-linux-gnu) ...

Admin

終了していない以前のコマンドが特定の文字列を印刷した後にコマンドを実行するには?
control-flow

終了していない以前のコマンドが特定の文字列を印刷した後にコマンドを実行するには?

commandA次の印刷を実行したいと思います。 line1 line2 line3 started successfully line4 ... ... その行が印刷されたら、started successfully別のコマンドを開始したいと思います(そして出力を多重化して両方を端末に印刷することもできます)。 Bashでどのようにこれを達成できますか? ...

Admin

アプリケーション実行ロジックのエラーを検出するツール
control-flow

アプリケーション実行ロジックのエラーを検出するツール

アプリケーション実行ロジックのエラーを検出したいです。たとえば、 free()返送先住所に電話するのを忘れました。malloc() 返されたファイルハンドルが閉じられませんでした。open() 無効なフラグが渡されました。open() 渡されたファイルハンドルが正しくありません。poll() write()書き込み用に開いていないfd呼び出し open()たとえば、open("/etc/fstab", 4) に無効なフラグを渡します。 close()無効なfd呼び出し中 ... 何百ものものがあると思います。 おそらく、ツールはftraceまたはように実...

Admin

もし!(...)そして;if[ $? -eq 0] (...)
control-flow

もし!(...)そして;if[ $? -eq 0] (...)

私はシェルスクリプトを書いており、次のことで私の仕事を確認することにしました。shellcheck.net。私のスクリプトでは、次の2行を使用して機能的に同じ動作を得ることができました。 findmnt /dev/sda1 >/dev/null ; if [ $? -eq 0 ]; then echo 1; else echo 0; fi そして if ! findmnt /dev/sda1 >/dev/null; then echo 0; else echo 1; fi しかし、シェルチェック投げる: SC2181:$?を間接的に使用する...

Admin

コードストアからリモートスクリプトを実行すると、無限ループが発生します。
control-flow

コードストアからリモートスクリプトを実行すると、無限ループが発生します。

私はしばしばGitHubでリモートBashスクリプトのrawバージョンを実行するために次のパターンを使用します。 wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | bash 通常は問題なく実行できますが、特定のスクリプトに次のコードを追加したため、無限ループが発生しました。echo(GitHubから端末にコピーして貼り付けて直接実行した場合でも頻繁に発生します。): w...

Admin

ユーザーが「less」を終了するまでスクリプトの実行を一時停止します。
control-flow

ユーザーが「less」を終了するまでスクリプトの実行を一時停止します。

ターゲット:lessコンテンツ(変数から)を入力し、ユーザーにコンテンツをファイル(たとえば.recovered_object)に保存する必要があるかどうかを尋ねます。その後ユーザーがログアウトしますless。 私のスクリプトから抜粋したものは次のとおりです。 ... # Show each blob until one is chosen counter=1 while IFS='' read sha; do printf "Showing blob %d of %d" "$counter" "$BLOB_COUNT...

Admin

STDERRで印刷する前にファイルを変更して書き込む方法
control-flow

STDERRで印刷する前にファイルを変更して書き込む方法

stderrGitHub Actionsを介して自動プール要求チェックを実行しており、ジョブ間でコマンド出力の一部のデータを保持したいと思います。 stderrそのために人工生産ただし、その前にいくつかの制御文字も削除する必要がありますsed。それ以外の場合は、次のような結果が発生します。 \x1b[31mFound 344 errors!\x1b[39;49m その後、メインコマンドは同じ終了コードを返し、チェックに失敗し、プール要求がマージされるのを防ぎます。 おそらく実行する必要があるタスクのサブセットを処理できますが、3つのタスクすべてを一緒に処理...

Admin

Bashスクリプトでコードブロックを早期に終了する方法(Perlの「最後の」ディレクティブに似ています)
control-flow

Bashスクリプトでコードブロックを早期に終了する方法(Perlの「最後の」ディレクティブに似ています)

私が本当に好きなPerlの機能の1つは、ループ制御キーワードの一般化です。どの中括弧で区切られた語彙塊1. たとえば、last次のおもちゃスクリプトに示すように、Perlのコマンドを使用してそのブロックを終了できます。 #!/usr/bin/env perl use strict; my $value = $ARGV[0] || 0; my $overall_status = 'failed'; { $value > 0 and print "$value > 0\n" or last; $value > 1 and print...

Admin

ループで呼び出された関数から「続き」を返します。
control-flow

ループで呼び出された関数から「続き」を返します。

私は現在徐々に制御不能状態になっていくスクリプトをリファクタリングしています。繰り返しを機能に分解しようとしています。しかし、ループで呼び出される反復テストがあり、このテストがcontinue。 シェルチェック SC2104: In functions, use `return` instead of `continue`. Shellcheck Wikiにはこれをしないように言われています。しかし、方法がありますか? 以下は例です。 #!/bin/sh AFunction () { if [[ "${RED}" -lt 3 ]]; then ...

Admin

ドライバモジュールのコードフローをどのように理解できますか?
control-flow

ドライバモジュールのコードフローをどのように理解できますか?

私はLinuxデバイスドライバの作業をしています。主な焦点はWi-Fiドライバです。デバイスを接続するときにコードがどのように流れるかを知りたいです。たぶん、printk各関数に1行を追加するなどの操作を実行できます。私が持っているデバイスはドライバでサポートされていますath9k_htc。学習目的でドライバコードをいくつか変更したいと思います。 Linuxでドライバモジュールのコードフローを理解する正確なまたは一般的な方法は何ですか? ...

Admin

Zsh: Vared 組み込みタイムアウト
control-flow

Zsh: Vared 組み込みタイムアウト

私はwhileループを使用しています。varedユーザーに入力するように求められます。タイムアウトを設定し、デフォルト変数を実行し、一定時間が経過してもユーザー入力がない場合は、プロンプトに戻る方法を探しています。読み取りコマンドとそのタイムアウトパラメータについて知っていますが、これは通過可能ですかvared? varedまた、プロンプトに印刷されないようにデフォルト値を設定する方法はありますか? local command while : do echo "Enter a command or type 'quit' to exi...

Admin

パイプラインの中央にある行数を計算する方法
control-flow

パイプラインの中央にある行数を計算する方法

パイプラインの行数を計算し、結果に基づいてパイプラインを続けたいと思います。 頑張った x=$(printf 'faa\nbor\nbaz\n' \ | tee /dev/stderr | wc -l) 2>&1 \ | if [[ $x -ge 2 ]]; then grep a else grep b fi しかし、まったくフィルタリングしません(「a」も「b」でもありません)。少なくとも、次は期待通りに動作するので、これは非常に予期しないことです。 printf 'faa\nbor...

Admin

端末コマンドテンプレートループで&&演算子を使用できますか?
control-flow

端末コマンドテンプレートループで&&演算子を使用できますか?

より読みやすく、同様のコマンドのリストをより明確にしたいので、少しのターミナルループを作成しました。 for what in \ cache \ thumbs \ ; do my template $what:clear; done うまくいきますが、 my template cache:clear && my template thumbs:clear 簡単で明確に配置する方法はありませんか?&&このようなループで作業すると最後のコマンド終了コードを確認するために、ループ本体にif / elseステー...

Admin