免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3573 | 回复: 14
打印 上一主题 下一主题

[文本处理] 求助:问个关于循环和变量的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-27 10:01 |只看该作者 |倒序浏览
CD1=A001
CD2=A002
CD3=A003

for(( i = 1; i<=3; i++));
do
    CD=CD$i
    echo " ${CD} "
done

我想得到的结果是循环输出A001,A002,A003,这种方法显然是错误的。
CD1,CD2,CD3是一个变量,我想让1、2、3是用循环的方式取得,然后输出CD123的值。
应该怎样写才是正确的,求解!谢谢!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2013-11-27 10:12 |只看该作者
本帖最后由 jason680 于 2013-11-27 10:26 编辑

回复 1# 编程序了没

How about this way with array

CD=(A001 A002 A003)
for cd in ${CD[@]}do
  echo $cd
done

------------------
A001
A002
A003

论坛徽章:
0
3 [报告]
发表于 2013-11-27 10:15 |只看该作者
I do not want to use the "in" ,but thank  you very much回复 2# jason680


   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
4 [报告]
发表于 2013-11-27 10:20 |只看该作者
本帖最后由 关阴月飞 于 2013-11-27 10:23 编辑

回复 1# 编程序了没


    echo " ${CD} "   ==>  echo "${!CD}"

or

echo "${CD}"  ==>  eval echo "\$${CD}"

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [报告]
发表于 2013-11-27 10:22 |只看该作者
只会这种用类似的in分支判断的
  1. #!/bin/bash

  2. CD1=A001
  3. CD2=A002
  4. CD3=A003

  5. for(( i = 1; i<=3; i++));
  6. do
  7.     case "CD$i" in
  8.         "CD1")
  9.             CD=$CD1
  10.             echo $CD
  11.          ;;
  12.         "CD2")
  13.             CD=$CD2
  14.             echo $CD
  15.          ;;
  16.          "CD3")
  17.             CD=$CD3
  18.             echo $CD
  19.          ;;
  20.              *)
  21.             echo "Error"
  22.     esac
  23. done

  24. A001
  25. A002
  26. A003
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2013-11-27 10:27 |只看该作者
  1. #!/bin/bash


  2. CD1="A001"
  3. CD2="A002"
  4. CD3="A003"

  5. for(( i=1; i<=3; i++))
  6. do
  7.     eval CD=\$CD$i
  8.     echo $CD
  9. done
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2013-11-27 10:27 |只看该作者
回复 4# 关阴月飞

这个很犀利啊,能解释下吗?


   

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
8 [报告]
发表于 2013-11-27 10:27 |只看该作者
回复 1# 编程序了没
  1. eval echo "\${$CD}"
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
9 [报告]
发表于 2013-11-27 10:43 |只看该作者
echo " ${CD} "   ==>  echo "${!CD}"  ,这个东西“猫头鹰大侠”说过,但不知道为啥来着。PF大侠给解析下 @关阴月飞

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
10 [报告]
发表于 2013-11-27 10:44 |只看该作者
本帖最后由 关阴月飞 于 2013-11-27 10:46 编辑

回复 7# Herowinter


    ${!var} ==》 使用间接变量:   先得到 $var 的值,再用该值作为变量名,进行变量替换。

和eval echo \$${var}  是一个意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP