当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 15 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [已解决][问题]如何将一个变量值作为另一个变量的名称?
帖子发表于 : 2008-07-21 21:00 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
1 。[问题]如何将一个变量值作为另一个变量的名称?

比如:
$1=a
$2=b
......

$a=ok
$b=okay

假设我们不知道需要$a和$b哪个变量的值.只知道需要名称为$1的值的变量的值。

如何由$1 我们想要的值?
---------------------------------

2.

或者如何获得传递给1个函数的所有参数的值,前提是参数个数不定,编程者不知道会有几个,但需要在函数中处理所有参数。。


2个问题,任一解决即可。


_________________
http://www12.asphost4free.com/tobey/


最后由 Tobey 编辑于 2008-07-22 21:03,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-22 1:36 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
同问, 还有, 如果是c++, 这个问题如何解决?


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:08 
头像

注册: 2007-10-24 10:21
帖子: 80
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
这个问题比较常用,呵呵

shell :

a=abc;abc=kkkkkk;eval b=\$$a;echo $b


最后由 79hy 编辑于 2008-07-22 10:10,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:09 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
yjcong 写道:
同问, 还有, 如果是c++, 这个问题如何解决?


C++ 的话
不可能解决


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:11 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
第二个问题..
foo() { for i in "$@" ; do echo $i ;done ; }


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:13 
头像

注册: 2007-10-24 10:21
帖子: 80
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
c里面肯定用指针,c++的就不知道了。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:15 
头像

注册: 2007-10-24 10:21
帖子: 80
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
第二个问题..
foo() { for i in "$@" ; do echo $i ;done ; }


打印参数列表???有什么问题


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:16 

注册: 2008-07-22 9:56
帖子: 14
送出感谢: 0 次
接收感谢: 0 次
代码:

#!/bin/bash
# a.sh - 打印环境变量的值,待打印变量名由命令行参数传入,数量不定
for i in $@; do
   value=$(eval "echo \$$i")
   echo "$i=$value"
done


运行:
代码:
$ ./a.sh HOME PWD HOSTNAME SHELL
HOME=/home/yourlogin
PWD=/home/yourlogin
HOSTNAME=yourcomputer
SHELL=/bin/bash


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:16 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
79hy 写道:
BigSnake.NET 写道:
第二个问题..
foo() { for i in "$@" ; do echo $i ;done ; }


打印参数列表???有什么问题


顶楼, 第二个问题


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:25 
头像

注册: 2007-10-24 10:21
帖子: 80
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
没明白你第2个问题问什么?


_________________
#######################
最终幻想: 用vbox虚拟出一套房子
#######################


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:26 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
79hy 写道:
没明白你第2个问题问什么?


就是变长参数

PS: 不是我问的


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:27 
头像

注册: 2007-10-24 10:21
帖子: 80
地址: 长沙
送出感谢: 0 次
接收感谢: 0 次
代码:
huying@huying:~$ echo $HOME
/home/huying


你可以在shell里直接打印这种环境变量阿


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:29 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
:D


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-07-22 10:58 
头像

注册: 2006-04-29 10:51
帖子: 105
送出感谢: 0 次
接收感谢: 0 次
对于第二个问题,在c99语言里面可以使用自变量数量可变的函数,
称为“variadic" 函数,最典型的例子就是printf和scanf函数。

摘要:

“variadic”函数要存取可选性自变量的时,必须通过一个类型为
va_list的对象,该类型定义在“stdarg.h”中。相关的宏定义有:
void va_start(va_list argptr ,lastparam);
type va_arg(va_list argptr , type);
void va_end(va_list argptr);

例子:
//add() 累加可选性自变量
//自变量:n 为可选性自变量的数量
//返回值:累加和 double

#include <stdarg.h>
//...
double add(int n, ...)
{
int i = 0;
double sum = 0.0;
va_list argptr;

va_start(argptr , n); //取得第一个可选性自变量的位置来初始化argptr自变量指针
for(i = 0 ; i < n ; ++i ){
sum += va_arg(argptr , double ); //读取类型为double的自变量,累加到sum
}
va_end( argptr );

return sum;
}


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-07-22 21:02 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
谢谢各位,

1.
a=abc;abc=kkkkkk;eval b=\$$a;echo $b

我在windows cygwin中可以啊。我记得好像在os x中这样试过的。不行,可能自己写错了。明天上班再试试。


2.
$@ 。。谢谢

我用的这个
while [ $# -ne 0 ]; do
echo $1
shift
done

还是从教程上看来的。呵呵。


_________________
http://www12.asphost4free.com/tobey/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 15 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译