[解決済み】ファイルからBashの配列に行を読み込む【重複】。
2022-04-21 11:04:33
質問
行を含むファイルを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でファイルの中身をループする
最新
-
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 実装 サイバーパンク風ボタン