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

读.sh:

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

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

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 回答