問題タブ [ifs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - 驚くべき配列拡張動作
(!!)
次の例でマークされている行には驚かされました。
これが私の動作の理解です:
${X[*]}
両方とも${X[@]}
展開しますa b
"${X[*]}"
に展開します"a|b"
"${X[@]}"
に展開します"a" "b"
$*
と$@
は、 と と同じ動作を${X[*]}
し${X[@]}
ますが、内容がプログラムまたは関数のパラメーターであることを除きます。
これはbash manualで確認されているようです。
したがって、行log1 "${X[*]}"
では、引用符で囲まれた式が "a|b" に展開され、log1 関数に渡されることを期待しています。この関数には、表示される単一の文字列パラメーターがあります。なぜ他の何かが起こるのですか?
あなたの答えがマニュアル/標準の参考文献に裏打ちされていれば素晴らしいと思います!
excel - Excelで複雑にネストされたIFS
したがって、次の列を持つチケットシステムを追跡するために、この出力があります。
あるアイテムを 1 週間に開封した平均日数を出力する数式を作成するにはどうすればよいですか?
たとえば、2015 年の第 32 週で、ロケーション「A」の「1」に分類されたアイテムの平均開封日数は?
これは、(すべてのチケット '1' の合計オープン日数)/(アイテム '1' の合計オープン チケット数) に等しいはずです。
(resolved_date) – (create_date) (週の最終日) > (resolved_date) の場合、これはチケットがレポート週内に解決されたことを示します。= (レポートの週の最終日) – (create_date) (レポートの週の最終日) < (resolved_date) の場合、これはレポートの週の後にチケットが解決されたことを示します。= (レポート週の最終日) – (create_date) resolve_date = null の場合、これはチケットが現在解決されていないことを示します。
この IF( condition1, value_if_true1, IF( condition2, value_if_true2, value_if_false2 )) のようなネストされた ifs 式を考えていますが、作成するのに十分な Excel に精通していません。
ありがとう!
string - IFSを使用してbashで文字列を個々の文字に分割する
文字列を個々の文字に分割しようとしています。たとえばtemp="hello"
、"h", "e", "l", "l", "o"
以前の文字列分割で使用したものであり、スクリプト全体で一貫性を維持したかったため、IFS を使用してみました。
IFS='' read h e l l o <<<"$temp"
動作しません。私は何を間違っていますか?
unix - テキスト ファイルから情報を抽出し、UNIX のコマンドで使用する
「accounts.list」という .list ファイルから情報を抽出し、抽出した情報を CentOS 7 のコマンド ライン操作で使用しようとしています。簡単な解決策があることは知っていますが、一生見つけることができません。
したがって、ファイルには次の形式で各行がリストされています。
私がする必要があるのは、各行からの情報を使用してユーザーを追加することです。たとえば、各部分を変数に追加し、その変数を adduser コマンドで使用したいとします。
したがって、各行を調べてその情報を抽出し、ユーザーを追加してから、次の行に進む必要があります。可能な限り簡単な方法でこれを行いたいのですが、私が試したことは何もありません。どんな助けでも大歓迎です。
bash - 単一ステートメントの IFS の設定
私の場合、質問に答えるためGNU bash, version 4.3.42(1)-release
にいくつかのテストを行っています。アイデアは、 - で区切られた文字列とその各要素を配列に分割することです。:
このために、コマンドのスコープでIFS
toを設定して、分割が自動で変更されないようにします。:
IFS
そして明らかIFS
に同じままです:
BASHリファレンスには次のように書かれています:
IFS が設定されていない場合、パラメーターはスペースで区切られます。IFS が null の場合、パラメータはセパレータを介さずに結合されます。
IFS
ただし、が壊れていることに気付き、代わりにがecho $myvar
返されます。a b c
a:b:c
値を設定解除すると解決します。
しかし、私は疑問に思います: 何が原因なのですか? 実行中のコマンドの範囲だけIFS=: command
変更していませんか?IFS
これが実際に機能する単一のステートメントの IFS の設定で確認します。
しかし、なぜそれが行われ、行われないのかわかりIFS=: d=($myvar)
ません。
bash - 入力コマンド引数が複数行の場合、BASH for ループでどの IFS を使用すればよいですか?
forループの反復ごとに、pcgrepの単一の完全な複数行の結果を変数に格納したいと考えています。
元:
ただし、個別のpcgrep結果をそれぞれ適切に認識して変数に格納できるIFSを使用する必要があるかどうかはわかりません(反復ごとに1つの結果)。
また、目標を達成するための他のラウンドアバウト手段を聞くこともできます(IFSが関係していなくても)
以下は、私が使用するいくつかのサンプル結果です。
結果 1:
結果 2:
前もって感謝します
bash - 一度に 1 つのスライスをループしながらフィードする方法は?
文字列を読み取って特定の区切り記号で分割したい場合は、文字IFS
列スライスを設定して配列に格納できます。次に、そのアイテムでやりたいことを何でもできます。
これは以下を返します:
ただし、ループごとにこれらのフィールドの 1 つだけを読み取りたい場合があります。while
したがって、このループに毎回スライスを供給する方法があるのではないかと思います。つまり、最初の反復ではread
get just a
、2回目の反復では get just というb
ようになります。
ループにフィードする方法を変更する方法を見つけました。代わり<<< "a_b"
に、すべてを次の新しい行にtr
置き換えることで、これを分割していました。_
< <(tr "_" "\n" <<<"a_b")
しかし、私は疑問に思います:これには他の方法がありますか? フィールドセパレーターを変更する必要があるため、Bash には、たとえばIFS
「レコードセパレーター」を設定するための他の変数がありますか?awk