sh/bash/dash/ksh/zsh等Shell脚本
-
Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
#1
帖子
由 Think1st » 2012-02-07 23:20
例如:
#!/bin/sh
A=1
B=A
C=B
echo 1 #结果1
echo $A #结果1
请问,如何用B来表示1呢,比如"echo $($B)"之类得,当然这是不对的。
试了好久都不行呢,急啊

上次由
Think1st 在 2012-02-14 9:27,总共编辑 1 次。
在这里,问题比答案更抢手。
-
枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
-
联系:
#2
帖子
由 枫叶饭团 » 2012-02-07 23:45
``不知道能行不,反引号
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#3
帖子
由 fnan » 2012-02-08 0:49
A=1;B=A;C=B;eval echo \$${!C}
1
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
#4
帖子
由 Think1st » 2012-02-08 15:05
枫叶饭团 写了:``不知道能行不,反引号
试过了,不行呢。
在这里,问题比答案更抢手。
-
Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
#5
帖子
由 Think1st » 2012-02-08 16:11
fnan 写了:A=1;B=A;C=B;eval echo \$${!C}
1
在终端下试了,可以。
eval echo "\$$B" #结果1
echo ${!B} #结果也是1,bash version2 添加得功能
但是在文件中比如
#!/bin/bash
A=1
B=1
eval echo "\$$B"
运行显示空白。
不知为何呢。。我bash得版本是4.1.5(1)。求解答。

在这里,问题比答案更抢手。
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#6
帖子
由 fnan » 2012-02-08 20:27
B=A
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
tosail2010
- 帖子: 83
- 注册时间: 2011-03-27 19:01
-
联系:
#7
帖子
由 tosail2010 » 2012-02-09 16:11
Think1st 写了:例如:
#!/bin/sh
A=1
B=A
C=B
echo 1 #结果1
echo $A #结果1
请问,如何用B来表示1呢,比如"echo $($B)"之类得,当然这是不对的。
试了好久都不行呢,急啊

echo $(eval echo \$$B)
A year's plan starts with spring.
-
Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
#8
帖子
由 Think1st » 2012-02-11 14:45
fnan 写了:B=A
恩,这里写错了
在另外一个电脑写脚本
1 #! /bin/sh
2
3 A=1
4 B=A
5
6 echo 1
7 echo $A
8 eval echo "\$$B"
9 echo $(eval echo \$$B)
运行,都可以显示1。
算是解决了吧。

在这里,问题比答案更抢手。
-
YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
-
联系:
#10
帖子
由 YeLee » 2012-02-11 15:21
-
tusooa
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
-
联系:
#11
帖子
由 tusooa » 2012-02-12 18:57
Think1st 写了:例如:
#!/bin/sh
A=1
B=A
C=B
echo 1 #结果1
echo $A #结果1
请问,如何用B来表示1呢,比如"echo $($B)"之类得,当然这是不对的。
试了好久都不行呢,急啊

${!B}