0

次の情報で構成されるテキスト ファイルがありますtest.text

an
apple of 
one's eye

cat test.text を実行して、シェル スクリプトを使用してこれらの行を配列で読み取りたいと考えています。を使用してみa=(`cat test.text`)ましたが、スペースを区切り文字と見なすため機能しません。a[0]=an、、a[1]=apple ofの値が必要ですa[2]=one's eye。使いたくないIFS。助けが必要です、事前に感謝..!!

4

4 に答える 4

2

4bash以降

readarray a < test.text

これには空白行ごとに空の要素が含まれるため、最初に入力ファイルから空白行を削除することをお勧めします。

以前のバージョンでは、アレイを手動で構築する必要があります。

a=()
while read; do a+=("$REPLY"); done < test.text
于 2013-11-08T17:12:27.463 に答える
1

あなたが持っているさまざまなオプションの1つは、 readで使用することです。改行に設定し、行区切りを NUL に設定しますIFS

IFS=$'\n' read -d $'\0' -a a < test.txt
于 2013-11-08T17:11:50.487 に答える
1

プレーンsh

IFS='
'
set -- $(< test.txt)
unset IFS
echo "$1"
echo "$2"
echo "$@"

bash

IFS=$'\n' a=($(< test.txt))
echo "${a[0]}"
echo "${a[1]}"
echo "${a[@]}"

これらはループを含まないため、利用可能なソリューションの中で最良のものであると私は言いがちです。

于 2013-11-08T17:14:13.077 に答える
0

まあ言ってみれば:

cat file
an

apple of

one's eye

この while ループを使用します。

arr=()
while read -r l; do
    [[ -n "$l" ]] && arr+=("$l")
done < file

テスト

set | grep arr
arr=([0]="an" [1]="apple of" [2]="one's eye")
于 2013-11-08T17:10:34.840 に答える