bash模拟两维数组

sh/bash/dash/ksh/zsh等Shell脚本
回复
fnan
帖子: 919
注册时间: 2009-07-01 22:04
送出感谢: 0
接收感谢: 13 次

bash模拟两维数组

#1

帖子 fnan » 2011-04-22 8:41

不知 有没有实用价值,至少有多维数组效果。
kose5@kose5-Aspire-4552:~$ cat s4
3 -48649.13278 368120 1516 -5372
-37467 -31 -5 4261 798456.596500
1 3209.548633 3739275 41 -171.883401
641 -1 252742 -227590 2.3424
87714 432.718208 9283284 3588514.631154 -3
-3 -3958.592141 5579.114579 -1.505335 -55.275932
-959 279637.899847 9622.225470 -9753.993507 438083
25517.210681 -5806941.361655 -2 26.755458 20772
-67 17692 1.305684 92 -56921
54601 -7494.483416 -689496.816738 -3.905398 98.406025
kose5@kose5-Aspire-4552:~$

代码: 全选

kose5@kose5-Aspire-4552:~$ cat t1.sh
#!/bin/bash

function f_show_file_number
{
         echo ${a_file[${1}0${2}]}
}
while read line;do
	((l++))
	c=0
	for i in $line;do
		((c++))
		a_file[${l}0${c}]=$i
	done
	if [[ $l%10 -eq 0 ]];then
		echo $l
	fi
done <$1
echo "共 $l 行,${#a_file[@]} 个数字。"
while read -p "要查询第 x 行第 y 个数字(x y)?  " x y;do
         number=$(f_show_file_number $x $y)
         if [[ -n $number ]];then
                 echo "文本 $1 中第 $x 行第 $y 个数字是:" [$number]
         else
                 echo "无此数字"
         fi
	 echo
done
echo
   
kose5@kose5-Aspire-4552:~$ 
kose5@kose5-Aspire-4552:~$ ./t1.sh s4
10
共 10 行,50 个数字。
要查询第 x 行第 y 个数字(x y)? 2 3
文本 s4 中第 2 行第 3 个数字是: [-5]

要查询第 x 行第 y 个数字(x y)? 2 6
无此数字

要查询第 x 行第 y 个数字(x y)? 2 5
文本 s4 中第 2 行第 5 个数字是: [798456.596500]

要查询第 x 行第 y 个数字(x y)? ^C
kose5@kose5-Aspire-4552:~$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: bash模拟两维数组

#2

帖子 eexpress » 2011-04-22 11:37

用过一次。
只是觉得bash作这,真蛋痛。
● 鸣学
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

Re: bash模拟两维数组

#3

帖子 fanhe » 2011-04-24 20:52

shell能力有限,不要强shell所难,例如浮点结算……
回复

回到 “Shell脚本”