[解決済み] ファイルからBashの配列に行を読み込む【重複
2022-03-10 01:53:17
質問
行を含むファイルをBashの配列に読み込もうとしています。
これまで以下のように試してみました。
試行1
a=( $( cat /path/to/filename ) )
試み2
index=0
while read line ; do
MYARRAY[$index]="$line"
index=$(($index+1))
done < /path/to/filename
どちらの試みも、ファイルの最初の行を含む1要素の配列を返すだけです。私は何を間違えているのでしょうか?
bash 4.1.5を使用しています。
解決方法を教えてください。
のコメントを基にした最新リビジョンです。
BinaryZebraのコメント
と
ここでテスト
. を追加しました。
command eval
によって、現在の実行環境に式を保持することができます。一方、それ以前の式は eval の間だけ保持されます。
スペースタブがなく、改行だけの$IFSを使用する/CR
$ IFS=$'\r\n' GLOBIGNORE='*' command eval 'XYZ=($(cat /etc/passwd))'
$ echo "${XYZ[5]}"
sync:x:5:0:sync:/sbin:/bin/sync
また、配列を正しく設定しても、読み方が間違っている可能性があることにも注意してください。
""
と中括弧
{}
上記の例のように
編集する
私の回答について、グロブ展開の可能性についてのコメントで多くの警告があることに注意してください、具体的には gniourf-gniourf さんのコメント を回避するための私の以前の試みについて
これらの警告を念頭に置いて、私はまだこの答えをここに残しています(はい、bash 4は何年も前に出ていますが、私はわずか2/3年前の一部のMacがデフォルトシェルとしてプリ4を持っていることを思い出します)。
その他の注意点
以下のdrizztさんの提案に従って、フォークしたsubshell+catを以下のように置き換えることもできます。
$(</etc/passwd)
もう一つの方法は、IFSをXIFSに設定し、その後リストアする方法です。 以下も参照してください。 Sorpigalの回答 わざわざこんなことをする必要はない。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列の配列をループする?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み】bashでパラメータとして配列を渡す。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSON配列のプッシュ
-
[解決済み] JSON スキーマで列挙型の配列を定義する正しい方法
-
[解決済み] デリミタを使って文字列をスライスする方法
-
[解決済み] Handlebarsでオブジェクトの配列を反復処理する方法は?
-
[解決済み】TypeScriptで複数の型を持つ配列を定義する
-
[解決済み】JSONのオブジェクトの配列をYAMLで表現したもの
-
[解決済み】Bashで配列の要素を別行動で表示する?
-
[解決済み] SwiftでArrayの最初の5つのオブジェクトを返すには?
-
[解決済み】ファイルからBashの配列に行を読み込む【重複】。
-
[解決済み】Swiftの配列の代入が矛盾している(参照でも深層コピーでもない)理由はあるのか?)