最新記事

「while」ループは変数の内容を読みません。
bash
test

「while」ループは変数の内容を読みません。

私の問題を説明するために小さなスクリプトを設定しました。 while同じ時間に繰り返しループを設定しました。$outputNo screen session found #!/bin/bash echo Stopping server... output=$(screen -S tls -X eval 'stuff "stop\015"') while [ "$output" = "No screen session found." ] do echo "$output" sleep 1 done echo Server stopped! このスクリプトを実行するとすぐに停止します。 Stopping server... Server stopped! わかりました、だから私の考え$outputはNo screen session found.。 しかし、ループを次のようなループwhileに切り替えると:until until [ "$output" = "No screen session found." ] $output私のループは今見た文字列と同じではないので、ループが繰り返され始めると予想する必要があります。ループが繰り返されている間にecho $output私が追加したコマンドは、ループが実際に終了する必要があることを示します! Stopping server... No screen session found. No screen session found. No screen session found. No screen session found. 〜のように$output 同じ No screen session found.! どうしたの?whileanduntilループが内容を無視するのはなぜですか$output?

Admin

Bashスクリプトは、他の変数に格納された値に基づいて変数を生成します。
bash
scripting

Bashスクリプトは、他の変数に格納された値に基づいて変数を生成します。

アドバイスを聞きたいです。 JSONファイルを返すIOTデバイスAPIを照会していますが、データの順序が常に順番に出力されるわけではありません。 bashを使用してjsonから値番号を正常に抽出し、連結して変数に保存しました。データをソートして保存するために、関連付けられた変数の値に基づいて変数を作成したいと思います。私はそれを使用していますジャックJSONと配列インデックスのクエリJSONでさまざまなオブジェクトをクエリし、$ idを生成します。 did=myvar$id echo $did myvar10 これが私が今詰まっている部分です。 $didに格納されている値で新しい変数を作成できるようにしたいです。 例えば、 もし私がエコ$didと入力してmyvar10を返すには、$ myvar10という新しい変数を作成する必要があります。 もし私がエコ$disを実行してmyvar8を返す場合は、$ myvar8という新しい変数を作成する必要があります。 誰かが私が正しい方向に動くのを助けることができますか? ティア

Admin

.bashrcはpycharm端末で自動的に実行されません。
bash
linux-mint

.bashrcはpycharm端末で自動的に実行されません。

私はLinux mint 20.3とPycharm CE 2021.3.2のバージョンを使用しています。 .bashrcに主要な環境変数を作成しています。残念ながら、pycharm端末を起動してもbashrcは実行されません。 .bashrcの始めと終わりにいくつかのechoコマンドを追加したので、これについて確信しています。 あなたは何を提案しますか?

Admin

「find」と「nano」コマンドを組み合わせる方法
bash
find
nano

「find」と「nano」コマンドを組み合わせる方法

「find」コマンドと「nano」コマンドを組み合わせる方法は? 例えば、 find . -name "helloworld.py" | nano 「nano」(関数を使用せずに1行リンクコマンドを使用して)を使用してファイルを見つけたら、このファイル(おそらく複数の最初のファイル)をどのように開くことができますか?

Admin

tmux:常にすべてのウィンドウのサイズを利用可能な最大サイズに調整するには?
bash
command-line
tmux

tmux:常にすべてのウィンドウのサイズを利用可能な最大サイズに調整するには?

tmux 3.0aを実行していて、より小さな解像度の端末を接続すると、より大きな端末も小さい端末にサイズ変更されます。 これはよく知られており(なぜデフォルトの動作に設定したのかわかりませんが)、解決策は次のとおりですc-b c-: :resize-window -A。tmux強制ウィンドウのサイズ変更、https://stackoverflow.com/questions/7814612/is-there-any-way-to-redraw-tmux-window-when-switching-smaller-monitor-to-bigger/61764869#61764869)。残念ながら、これは各ウィンドウ/ウィンドウで実行する必要があります。 このオプションを使用できますが、set-window-option -g aggressive-resize on私には違いはありません。 だから:常にすべてのウィンドウのサイズを利用可能な最大サイズに調整するには?

Admin

Bashスクリプト:ファイル循環
bash
shell-script
debian
ssh

Bashスクリプト:ファイル循環

いくつかの行を含むファイルがあります。 /snapshot/200 /snapshot/201 /snapshot/202 これで、各行とIFSループを使用していくつかの操作を実行しようとしています。 while IFS=' ' read -r test || [ -n "${test}" ]; do if ssh root@$TARGET "[ ! -d $test ]" then echo "${test}" fi done < $filelist ここでの問題は、1つの結果のみを取得し、ファイル全体を繰り返さないことです。これらの名前のディレクトリが存在しないため、ifステートメントは正確でなければなりません。 しかし、全体のif部分を削除して使用するだけ echo "${test}" ループが機能します。

Admin

入れ子になったディレクトリの作成
bash
command-line
directory
mkdir

入れ子になったディレクトリの作成

bashコマンドライン引数を使用し、ユーザーのホームディレクトリの下にネストされたディレクトリを作成するスクリプトを作成したいと思います。例えばa/b/c mkdir -p $1/$2/$3 しかし、私は3つ以上のディレクトリを作成したいと思います。コマンドライン引数3または5を使用して、必要な数の入れ子になったディレクトリを作成したいと思います。

Admin

sudoプレフィックスが付いていますが、フラグに基づくbashスクリプトでコマンドを実行する方法は?
bash
sudo

sudoプレフィックスが付いていますが、フラグに基づくbashスクリプトでコマンドを実行する方法は?

私の使用例は、macOSのdockerが保護されたセキュリティモデルといくつかのHyperVisorシステムを使用しているため、sudoまたはrootアクセスが必要ないことです(ここの詳細はトピックから離れています)。一方、実際の Linux カーネルと cgroup がある docker では、Linux ベースのシステムでは、docker はコンテナやコマンドを実行するためにアクセスが必要sudoかアクセス権があります。root 一つ書きたいかなり環境を正しく検出し、sudo必要に応じてすべてのdockerコマンドを実行するか、不要な場合は実行しない移植可能なスクリプトです。 これを達成するための最良の方法は何ですか? 私の考えの解決策は、dockerスクリプトで直接使用することです。 Linuxユーザーはそれを実行する必要がsudo ./script.shあり、macOSユーザーは単に実行できますが、含まれている./script.shすべてのコマンドはmkdir、ファイル生成などのルートで実行されます。最もクリーンな方法ではないようです。 私が探しているものの例: $sudo_or_not docker run -d nginx $sudo_or_not docker ps | grep nginx または多分 run_docker_command("docker run -d nginx") run_docker_command("docker ps | grep nginx") しかし、bashでこのようなことをする方法がわかりません。すでに$IS_MAC_OSまたは0同じ変数があるので、1ここではオペレーティングシステムを検出することが重要ではないとします。

Admin

キーバインディング機能で端末の編集可能な文字列に値を貼り付けることはできますか?
bash
terminal
keyboard-shortcuts

キーバインディング機能で端末の編集可能な文字列に値を貼り付けることはできますか?

Bashバインディングについて知っています。 bind -x '"\C-k":"mc"'- この例では、編集可能なコマンドが完了していない間にmcを実行できます。このようにして多くのマクロを実行できると思います。これはX11なしで作業するときに便利です。 次の方法でテスト値を貼り付けようとします。 bind -x '"\C-o":"echo -n 123"' bind -x '"\C-o":"echo -n 123 >> /dev/pts/12" bind -x '"\C-o":"xclip -out"' bind -x '"\C-o":"expect exp.txt"' しかし、結果は 別のアイデア: bashのクリップボード(Ctrl-w、Ctrl-y)を使用してください。 Man bashはこれを「キルリング」と呼びます。しかし、プログラムで使用する方法が見つかりません。 テキストの各文字を押すことをシミュレートするプログラムとしてエコーされます。

Admin