1

すべてのテキストファイルを読み取り、引数を入力して、変数に対して処理できるようにするにはどうすればよいですか?

1.txt -->100
2.txt -->200
..
9.txt -->900

$ ./read.sh 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt

read.sh:

$file1=$1
$file2=$2
...
$file9=$9

しかし、100の代わりに「1.txt」を挿入します。ファイルの名前の代わりにファイルの値を取得するにはどうすればよいですか?

4

2 に答える 2

2

私があなたの質問を正しく理解しているかどうかわかりません。スクリプトへの引数として渡すファイルの内容を変数$file1$file2などに入れたい場合は、次のread.shようにする必要があります。

file1=$(<"$1")
file2=$(<"$2")
...
file9=$(<"$9")

変数に値を割り当てるときは、先頭に。を付けずに変数名を使用する必要があることに注意してください$

より一般的な解決策(bash 4を使用している場合)は次のようになります。

declare -A files

while [ -n "$1" ]; do
  files[$1]=$(<"$1")
  shift
done

declare -A名前→値のマッピング(ファイル名→コンテンツなど)を格納できる連想配列(または辞書)を作成します。

于 2013-03-16T20:56:16.530 に答える
1

xargsを探していると思います。.txt ファイルがあるディレクトリで次のコマンドを試してください。

cat * | xargs ./read.sh

または:

./read.sh `cat *`
于 2013-03-16T20:24:07.220 に答える