读取所有文本文件并输入参数

时间:2013-03-16 20:08:05

标签: bash unix

我们如何读取所有文本文件并输入参数,以便我们可以为变量处理它?<​​/ p>

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

但它插入“1.txt”而不是100,我们如何获取文件的值而不是文件的名称?

2 个答案:

答案 0 :(得分: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创建一个关联数组(或字典),您可以在其中存储名称→值映射,例如文件名→内容。

答案 1 :(得分:1)

我认为您正在寻找xargs。在您的.txt文件所在的目录中尝试此命令:

cat * | xargs ./read.sh

可替换地:

./read.sh `cat *`