|
|
第 1 帖 | |
|
|
标题: 如何将一个输出中的若干行分别赋值给变量? 比如一个命令输出里面有3行
a bbb ccccccc 分别赋值给变量a1,a2,a3,可以么?如果输出更多,创建的变量也相应越多? 还有,如何读取一个文本文件中的若干行呢,和上面一样,分别赋值,可以么? 哪位能给个示范么,多谢了先。 |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
用数组
$ cat rawdata.9 val1 val2 val3 val4 val5 $ cat readval.sh #!/bin/bash declare -i i; i=1; declare -a var; while read tempvar; do var[i]=$tempvar echo "var[$i] = " ${var[i]}; i=$i+1; done < $1 $ ./readval.sh rawdata.9 var[1] = val1 var[2] = val2 var[3] = val3 var[4] = val4 var[5] = val5
__________________
E6300@3.2G/P5B-D WiFi/2G RAM/1TB HDD/3540A/7900GT/E-MU 0404 Logitech S 510/MX Revolution/2407WFP/LaserJet 1020 go wild, go Gentoo 此帖于 03-07-06 10:22 被 lucida 编辑. |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
逐行赋值给变量:
[javalee//home/javalee/myshell]n=1 [javalee//home/javalee/myshell]while read line > do > echo "a$n=$(echo $line)" > ((n+=1)) > done <tmp a1=a a2=bbb a3=ccccccc 若干行赋值给变量: [javalee//home/javalee/myshell]cat tmp #后添了几行 a bbb ccccccc sdfsaf sadfasdf asdfwe wer getyty werwerwer werwer [javalee//home/javalee/myshell]c=1;n=1;m=3 #每3行赋值一个变量 [javalee//home/javalee/myshell]l=$(cat tmp|wc -l) [javalee//home/javalee/myshell]while ((m<=$l)) > do > echo "a$c=$(sed -n "${n},${m}p" tmp)" > ((c+=1));((n+=3));((m+=3)) > done a1=a bbb ccccccc a2=sdfsaf sadfasdf asdfwe a3=wer getyty werwerwer 不知道是否适合你的要求? ![]() |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
javalee兄,你这样做只是echo,但是并没有赋值
就是说,a1/a2等等的内容还是为空 |
|
|
|
|
|
|
|
第 5 帖 | |
|
|
嗷~~~,我再看看,不好意思~~~
![]() 看来还必须用数组的方法! 此帖于 03-07-06 12:44 被 KornLee 编辑. |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
不用数组也可以啊,不过我觉得数组用起来比较清晰吧
$ export i=100 $ export a${i}=2 $ echo $a100 2 |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
逐行赋值:
[javalee//home/javalee/myshell]n=1 [javalee//home/javalee/myshell]while ((n<=$(cat tmp|wc -l))) > do > export a$n=$(cat tmp|sed -n "${n}p") > ((n+=1)) > done [javalee//home/javalee/myshell]echo $a10 werwer [javalee//home/javalee/myshell]echo $a1 $a2 a bbb 多行赋值: [javalee//home/javalee/myshell]num=1;from=1;to=3 [javalee//home/javalee/myshell]while ((num<=$(cat tmp|wc -l))) > do > export var$num="$(cat tmp|sed -n "${from},${to}p")" > ((num+=1));((from+=3));((to+=3));done [javalee//home/javalee/myshell]echo $var1 a bbb ccccccc [javalee//home/javalee/myshell]echo $var2 sdfsaf sadfasdf asdfwe 谢谢penny兄指点 ,我想这样可以的吧~~此帖于 03-07-06 17:24 被 KornLee 编辑. |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
javalee 的脚本里不用 echo,直接用 eval 就好了。
另外,如果原来的文件里就是 key=value 的模式的话,可以用 source file 的方式一次导入到环境变量中,霍霍,一句话就搞定了 ![]()
__________________
我是 xyb 的马甲,呵呵 ...."Have you mooed today?"... |
|
|
|
|
|