問題タブ [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.

0 投票する
2 に答える
5549 参照

arrays - 空行または使用されていない文字に基づいて、テキストファイルを配列に分割します

空のテキスト行で区切られたテキスト行を含むテキスト ファイルがあります。そのファイルの内容を配列にプッシュし、空の行をセパレーターとして使用したいと考えています。IFS="\n" (または "\r\n" など) を試しましたが、うまくいかなかったので、代わりに空の行をファイルにない文字に置き換えると思ったので、スペイン語の逆疑問符 (\xBF) を拾いました。

それで、ファイルをスライスして配列に入れるために使用する文字があります。

ここで、$IFS を変更して、逆疑問符を使用して配列のデータをスライスする必要があります。

入力すると

コマンドラインでは問題なく動作します

しかし、末尾に read -a を付けてそのコマンドを入力すると、何もしません:

$var には値があるので、それは奇妙です。

さらに驚くべきことに、取得直後に IFS の値を確認すると、次のようになります。

これは IFS のデフォルト値です。

IFSにはどんな文字でも使用できると確信していますよね?

または、空の行に基づいて分割して配列内のファイルを分割するためのトリックがあれば、私は興味があります! (それでも、理解のためにこれの一番下に行きたいと思います)。

どうもありがとうございました。良い週末をお過ごしください :)

0 投票する
3 に答える
102 参照

bash - シェルでネームファイルを分割する

ls コマンドで見つかったファイル名を分割する方法を知りたくてここにいます:D. もっとよく説明しましょう...

私は変数を持っています

そして、.img の前に名前が必要なだけなので、検索結果を分割したいので、IFS を使用することをお勧めします。

IFS=. read -r disk <<< $image

かなりいいですが、$disk 変数を使用してエコーを実行すると、表示されるのは「.img」だけです。そのドットの前にある場所を回復したいと思います。

皆様、ありがとうございました。

0 投票する
1 に答える
323 参照

bash - ヌル文字で区切られたコマンド ライン パラメータ

ファイル名にはスペースと改行が含まれている可能性がある\nため、フィールド区切り文字として null 文字を使用しています。findしかし、入力ディレクトリがヌル文字で区切られていると言う方法がわかりません。

私の失敗した試み:

find入力ディレクトリがゼロで区切られていることを確認する方法は?

0 投票する
1 に答える
857 参照

shell - KornShell (ksh) で IFS を適切に保存する方法

KornShell (ksh) スクリプトで変更する前に IFS を保存しようとしています。バックアップ変数が適切に保存されていないことがわかったので、問題を再現する簡単なスクリプトを作成しました。

OIFS をエコーするときに期待することは、スペース (040)、タブ (011)、改行 (012) の 8 進数の ASCII 値である IFS をエコーするときと同じです。ただし、これは出力です。

IFS 変数の出力には 3 つの文字すべてが含まれているのに対し、OIFS の出力には改行 (012) だけが含まれていることに注意してください。私が見たすべてのフォーラムは、これが IFS のコピーを作成する方法であることを示していました。OIFSが正しく設定されていない理由を知っている人はいますか? $IFS を二重引用符で囲んでみましたが、同じ結果が得られました。

私はAIX6で実行しています。

0 投票する
3 に答える
17049 参照

bash - shell - 改行のみの一時 IFS。これが機能しない理由: IFS=$(echo -e '\n')

forシェルで使用して、スペースを含むファイル名を反復処理しようとしています。使用できるスタックオーバーフローの質問を読みましたが、IFS=$'\n'うまくいくようです。次に、答えの1つへのコメントを読んで、使用できるbash以外のシェルと互換性があるようにしIFS=$(echo -e '\n')ました。

前者は機能しますが、後者は機能しません。コメントは数回賛成されています。出力を確認したところ、変数に改行が含まれていないようです。


出力は、最初のフィールド区切り文字が欠落していることを示しています。


しかし、2番目に適切です:


私の質問と重複している場合と重複していない場合がある回答済みの質問を見つけました:
linux - IFS を改行で分割するように設定する場合、バックスペースを含める必要があるのはなぜですか? - スタックオーバーフロー

そこで議論されていることを行うことに危険はありますIFS=$(echo -en '\n\b')か? \bそれはIFSにaを追加するためです(私はチェックしました)。\bファイル名にaが含まれることはありますか? コードで誤ってファイル名を分割したくありません。

forまた、ループ後に IFS の復元を適切に処理する方法に関する推奨事項はありますか? 一時変数に保存するか、サブシェルで IFS と for ステートメントを実行する必要がありますか? (そしてそれを行う方法は?)ありがとう

0 投票する
1 に答える
44 参照

c++ - ループと if の流れでロジックが正しくない

だから私は pat.txt で最低の年を見つけようとしていて、don.txt で最高の年を見つけようとしています:

Pat.txt

ドン.txt

コードは次のとおりです。

次に、関心のあるコード:

現在、最高の患者と最低のドナーを取得しています (2010-2009)、取得する必要がある (2003-2013)

等価を行っている if 文の 1 つでロジックが間違っているように感じます。現時点では、最高の患者と最低のドナーを見つけています。私はそれらをひっくり返さなければなりません。これを理解するのに何時間も費やしましたが、誰かが私の間違いを見てくれれば本当にありがたいです. ばかげた小さな間違いだと確信していますが、私の人生ではそれを見つけることができません

0 投票する
2 に答える
98 参照

bash - IFS= を使用して先頭のスペースが無視されるのを防ぐ

XML ファイルの特定の行の前に数行挿入しようとしています。機能していますが、フォーマットは保持されません。先頭の空白は無視されます。IFS= を使用する必要があることはわかっています。他の多くのリンクに加えて、次のリンクでもクロスチェックしましたが、役に立ちませんでした。:(

私がここで犯している間違いを誰か指摘してもらえますか?

読み取り中に先頭の空白を保持する>> bashでファイルを1行ずつ書き込む



データファイル:



config.xml:



出力: