問題タブ [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.
date - BASH: date コマンドをどのように「分割」しますか?
ここでは Cygwin ユーザーです (ただし、適切な解決策があれば、私も使用している K/Ubuntu に引き継ぐつもりです)。
.bashrc に次のようなウェルカム メッセージがあります。
上記の変数 SAD で空白を使用しようと何度も試みた後、あきらめてハイフンを使用しました。しかし、当然のことながら、私はこの一時しのぎのソリューションに満足していません。私が思い出したように、問題は、 dateの GNU マンページの適切なセクションにリストされている変数とともに、引用符で囲まれたスペース、\s、または同様のエスケープタグを使用しようとするたびに、Year の変数が無視されるか返されることでした。エラー。私がしなければならないことは、dateによって返された完全な文字列に頼ることではなく、上記のコードの順序を維持することです。
これを書いているときに、Welcome メッセージのこのコードの周りに IFS を設定すると、後でデフォルトに戻せば機能する可能性があることに気付きました (上記は 68 行の .bashrc の 13 ~ 17 行に表示されます)。ただし、それを行う方法を思い出せません。また、それが機能するかどうかもわかりません。
一般的に言えば、.bashrc ファイルは有効な BASH 構文ですよね。私のスクリプトは、私が自分で作成したか、他のソースからテストしたスクリプトに確かに似ています。私が見逃しているのは、このメッセージ ブロックのフィールド セパレータを設定および設定解除するためのコードだけだと思います。
解決策を思いついた人は、間違いなく私だけでなく、シェル スクリプトの世界で最初の (または 13 番目から 17 番目の) 一歩を踏み出すネット上の他の比較的初心者に有利に働くでしょう。
BZT
xml - 文字列トークン化アルゴリズムはトークン化されません
朝、私は特定のディレクトリ内のすべてのファイルから特定のXMLタグの値を抽出するbashスクリプトを作成しています。私は、各行をトークン化し、関連するトークンを返すことによってこれを行うことにしました。問題は、それが正しくトークン化されておらず、その理由を完全に理解できないことです。これが問題を再構築するために私が作ることができる最小の例です
問題は、それ自体がIFS(つまり、猫の操作)を使用するループ内でIFSをいじることに関係していると思いますが、これはこれまで問題になりませんでした。
何か案は?
ありがとう、リック
bash - IFS=$'\n' の正確な意味は何ですか?
IFS
環境変数を改行文字に設定する次の例の場合...
- ドル記号は正確には何を意味 しますか?
- この特定のケースで何をしますか?
- この特定の使用法について詳しくはどこで読むことができますか (Google は検索で特殊文字を許可しておらず、そうでなければ何を探すべきかわかりません)。
IFS
環境変数と\n
文字 (改行) は
わかっていますが、次の形式を使用しないのはなぜIFS="\n"
ですか? (これは機能しません)。
たとえば、ファイルのすべての行をループして for ループを使用したい場合は、次のようにします。
IFS
ただし、改行文字に設定しないと正しく動作しません。それを機能させるには、次のようにする必要があります。
注:同じことを行うための別の方法は必要ありません。既に他の多くの方法を知っています...私はそれについてのみ興味が$'\n'
あり、誰かが説明してくれるかどうか疑問に思いました。
bash - Unicodeを使用したスクリプトでのIFS変数の問題
シェルスクリプトで変数を使用してIFS
一部のデータを解析しています(データはすでに特定の形式で提供されています)。デフォルトのIFSはwhitespace/tab / etcで'¬'
あるため、入力ファイル行のフィールドを区切るために文字を使用しています。データは次のようなものです
以下を使用して、IFS変数を使用してファイルをwhileループにパイプするスクリプトを作成しました。
(このループ内で、実際に別のファイルを使用してawk処理を実行します)。
このファイルを手動で(./fileだけで)実行すると、完全に機能します。スクリプト(cron)の一部として、または別のスクリプト内で実行すると、IFS変数が使用されていないことを示す解析エラーが発生します。¬
古いIFS変数をコピーして、解析後にリセットしたり、IFS変数を渡すさまざまな方法( 、、、など)を試しましたが'¬'
、$'¬'
役に立たないようです。
任意のポインタ/ヒントをいただければ幸いです。
更新:いくつかの追加のデバッグの後、問題はセパレータではなくawkステートメントにあることが判明しました
bash - R スクリプトと bash を使用した文字以上の IFS の使用
私は bash スクリプトを使用して R スクリプトを作成および実行しています。RI に習熟していなかったので、bash スクリプトにループと条件を記述し、それを R スクリプトまたは「ヒア ドキュメント」に変換しました...ご想像のとおり、そうやって作ったR_scriptはものすごく長くて読みづらくなってしまうので… Rでループや条件の書き方を学んでいるのですが、system()というコマンドにいくつか難点があったので、どうにかシェルスクリプトが必要だなと思いました。引用とエスケープに夢中になりたくなかった... ;-) 私が最初に直面した問題の 1 つは、これでした: Rarr="file_1", "file_2", "file_3"
R_script に挿入したかったので、この eccのような変数を宣言したかったのです。
file_names が引用符で囲まれていない場合、R は file_names という名前のオブジェクトが見つからないというメッセージを表示するため、引用符が必要です。
配列定義のコンマ区切り要素で最初の解決策に従おうとしましIFS="" ,""
たがRarr="${arr[*]}";echo "${Rarr}"
、 arr の要素が ${IFS} の最初の文字だけで区切られているようです...私の場合、それらはによって区切られます"
方法はありますかこれを避けるには?
基本的に私の質問は、シェルにすべての文字を考慮するように強制する方法${IFS}
ですか?
とにかく、私の問題に対する2つの回避策を見つけました..最初の
および別のパラメーター置換...しかし、私の問題に対する直接的な解決策が存在するかどうかを知りたい
よろしくお願いします。
bash - 一方、実行、bashでフロー制御を実行
次のbashスクリプトの制御フローを誰かが説明できますか?
私が理解していることから、これは起こります:
IFSには何も割り当てられません。rm -rfコマンドは、その引数である変数$ fileが空白/空/何もないため、何もしません。その後、前の2つのステップが無期限に繰り返されます。
スクリプトは期待どおりに機能するため、明らかにこれは当てはまりません。todelete.txtにリストされているすべてのファイルを削除します。
説明は「done<todelete.txt」にあると思いますが、そこで何が起こっているのかわかりません。
linux - Bash は先頭の空白を削除しません
私は非常に奇妙な問題を抱えているようです。jsawk を使用して CURL コマンドから JSON フィールド値を取得しようとしていますが、jsawk には JSON がきれいに印刷されている必要があります (「python -mjson.tool」のおかげで、適切にフォーマットされた JSON ファイルで簡単に実現できます)。
問題は、JSON ファイル/文字列の先頭に空白がある (これは違法です) ことですが、それを削除できないようです。
いくつかのオプションは、スクリプトとは無関係に機能します (例: echo ~/m.json | sed -e 's/^[ \t]*//')
違いを見ます?ただし、次のすべての方法で目的の結果が得られるわけではありません。コマンドラインの動作をエミュレートするために、文字列を sed にパイプしてみましたが、うまくいきませんでした。誰かが私を正しい方向に向けることができますか?
「No JSON ...decoded」まで、複数の行(エコーごとに1行)を吐き出します
私が見逃したばかげた何かがあると確信しています。おそらく他に言及すべき唯一のことは、IFS を Space/Tab/NL から単に NL に変更したことです。
誰でもアイデアはありますか?または、JSON を解析するための別の簡単な方法はありますか? ありがとう!
bash - bash: 文字列から一度に 1 文字ずつ、空白を使用してテキストを読み取る
私は退屈なので、bash を使用してテキスト ベースの冒険のスクリプトを作成することにしました。基本的に、劇的なストーリーテリングのために、特定のケースでタイプライターをアニメーション化することになっています. 次のようなファイルでこれを手動で行うことができます。
ご想像のとおり、それはひどく退屈です。代わりに、文字列 (またはファイル) から一度に 1 文字ずつ文字を取り出し、それぞれの文字にスリープ コマンドを適用します。
これまでのところ、ファイルから読み取る次のものがあります。IFS= はスペースを保持できますが、他のタイプの空白 (改行など) は保持できません。
これを使用してすべての空白を取得する方法はありますか? おまけの質問として、別のファイルから読み取る必要がないように、これをユーザー定義スクリプトに適用する方法を教えてください。たとえば、「hello」という文字列があり、それを関数に渡すだけで、bash ターミナルでファイルを実行するたびにタイプライターとしてアニメーション化できます。
どんな助けでも大歓迎です。ありがとう!
arrays - 2つの区切り文字に基づいて読み取りファイルを配列にBashします
配列に解析する必要のあるファイルがありますが、実際には、各行の短い部分と最初の84行だけが必要です。時々行は多分:
そして、MTを配列に入力したいだけです。それ以外の場合は、次のようになります。
GL000207.1が必要です
2つの区切り文字(1つは'>'で、もう1つは''空白)を設定できるかもしれないと思っていましたが、どうすればよいかわかりません。内部フィールドセパレータについて他の人の投稿を読んだことがありますが、それがどのように機能するかは本当にわかりません。私はおそらくこのようなものがうまくいくかもしれないと思いますか?
助言がありますか?