LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1473|回复: 9

请教变量套用[已解决]

[复制链接]
发表于 2004-2-29 22:02:03 | 显示全部楼层 |阅读模式
我是个新手,请多多关照
我的问题是:
NUM1=100
NUM2=200
NUM3=300

#我想抽取1号
NUMID=1
echo ${NUM}${NUMID} #不行,再试!!
STRING="\$NUM"$NUMID
echo $STRING # 输出 $NUM1
echo | echo $STRING # 还是输出 $NUM1



在下不懂应该如何实现此功能,请指教
发表于 2004-2-29 22:12:36 | 显示全部楼层
用数组吧:


  1. [linuxer@mydesktop linuxer]$ NUM[1]=100 NUM[2]=200 NUM[3]=300
  2. [linuxer@mydesktop linuxer]$ NUMID=1
  3. [linuxer@mydesktop linuxer]$ echo ${NUM[$NUMID]}
  4. 100
  5. [linuxer@mydesktop linuxer]$ echo ${NUM[@]}
  6. 100 200 300

复制代码
 楼主| 发表于 2004-2-29 22:17:53 | 显示全部楼层
wow, cool , 真的可以,谢谢!!! 
发表于 2004-2-29 22:26:13 | 显示全部楼层
如果不用数组,还有什么办法呢
发表于 2004-2-29 22:40:28 | 显示全部楼层
/home/javalee:num1=100;num2=200;num3=300
/home/javalee:numid=2
/home/javalee:typeset|grep num[0-9]|grep $numid
num2=200
发表于 2004-2-29 22:45:01 | 显示全部楼层
如果大于10个变量就有麻烦了:


  1. [linuxer@mydesktop linuxer]$ NUM12=1200
  2. [linuxer@mydesktop linuxer]$ NUMID=2
  3. [linuxer@mydesktop linuxer]$ typeset|grep NUM[0-9]|grep $NUMID
  4. NUM12=1200
  5. NUM2=200
复制代码
发表于 2004-2-29 23:02:18 | 显示全部楼层
:sorry,是有些问题,我再看看~~~
home/javalee:set|grep num[0-9]|grep num$numid
num2=200
/home/javalee:numid=12
/home/javalee:set|grep num[0-9]|grep num$numid
num12=1200
这样将就吧 ,在想想别的其他办法
如果是这样:
/home/javalee:numa=100;numb=200;numc=300;numid=2
/home/javalee:set|grep num[a-z]|sed -n ${numid}p
numb=200
/home/javalee:
当然,数组是最佳选择
发表于 2004-3-1 09:45:53 | 显示全部楼层
试试这个;)

  1. [linuxer@mydesktop linuxer]$ cat notes/concatenated_param.txt
  2. #/bin/bash
  3. NUM1=100 NUM2=200 NUM3=300
  4. ##method 1:
  5. while :
  6. do
  7. echo -n 'Method 1. Input NUMID(0-9),(x/X->break1): ';read NUMID
  8. case "$NUMID" in
  9. [0-9])
  10. echo "NUMID=$NUMID";eval echo 'NUM$NUMID='\$NUM$NUMID;;
  11. [xX])
  12. unset NUM1 NUM2 NUM3 NUMID;
  13. break;;
  14. esac
  15. done

  16. ##method 2:
  17. NUM=(0 100 200 300 400 500)
  18. while :
  19. do
  20. echo -n 'Method 2. Input NUMID(0-9),(x/X->break2): ';read NUMID
  21. case "$NUMID" in
  22. [0-9])
  23. echo "NUMID=$NUMID NUM$NUMID=${NUM[$NUMID]}";;
  24. [xX])
  25. unset NUM NUMID;
  26. break;;
  27. esac
  28. done
复制代码
发表于 2004-3-28 01:26:27 | 显示全部楼层
用eval命令不可以么?。。这样多麻烦阿。。。
发表于 2004-3-28 02:19:22 | 显示全部楼层
最初由 黯然销魂 发表
用eval命令不可以么?。。这样多麻烦阿。。。
you are right :thank
  1. eval echo \$num$numid
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表