我想读取按列排序的数据文件。
在我编写的脚本中,我使用read
命令。
输入文件由如下几行组成:
XX:XX:XX:XX:XX PQRTS
YY:YY:YY:YY:YY ABCDE
ZZ:ZZ:ZZ:ZZ:ZZ FGHIJ
我用来阅读的内容是这样的
while read a b; do
echo $a
echo $b
done < filename.txt
到目前为止,它逐行读取并在循环的第一次迭代中分配给 和到XX:XX:XX:XX:XX
,在第二 次迭代中分配给和到,依此类推。 a
PQRTS
b
while
YY:YY:YY:YY:YY
a
ABCDE
b
现在我的问题是:
- 如何使用
a
和b
作为全局变量? - 我想分配
XX:XX:XX:XX:XX
,YY:YY:YY:YY:YY
以便可以在不同的功能中使用它们。
答案1
看来你需要bash arrays
为了达到你的目的,你可以编写如下脚本
#!/bin/bash
i=0
while read a[$i] b[$i]; do
echo ${a[$i]} # Print the current one a
echo ${b[$i]} # Print the current one b
i=$[ i+1 ] # Increment i
done < filename.txt
# do other stuffs... # if you want
echo "$[ $i -1 ] Items read " # The number of lines read
echo The second a was ${a[1]} # Array starts from 0
echo Those are all b ${b[*]} # You can print all together
- 这取决于你的意思
global
。遗憾的是,你不能简单地将export
它们放在脚本之外。从此man bash
你bash 4.3.11(1)-release
可以阅读。数组变量可能(尚未)被导出。
- 在脚本中,您可以将数组用作普通变量。
echo $a
您不必使用诸如echo ${a[0]}
或之类的东西来引用它们echo ${b[2]}
...
请注意,您需要{}
保护它们。