免费注册 查看新帖 |

Chinaunix

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

这两种写法的区别是什么呢?谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-23 17:15 |只看该作者 |倒序浏览
declare -x BAK_DATA_DIR=/data5/Backup/discuz_mysql


export BAK_DATA_DIR=/data5/Backup/discuz_mysql

有什么区别,一样吗?

论坛徽章:
0
2 [报告]
发表于 2008-04-23 17:30 |只看该作者
一样的

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2008-04-23 17:33 |只看该作者

回复 #1 dougq 的帖子

declare表示声名一个变量, 他的作用域只是当前的shell,
export表示导出一个变量, 他的作用域范围包括当前shell以及再次开启的子shell, 如:
/home/lee#ps
  PID TTY          TIME CMD
2256 pts/1    00:00:00 bash
3871 pts/1    00:00:00 ps
/home/lee#declare var=999 #var只在当前shell有效
/home/lee#echo $var
999
/home/lee#bash #开启一个子shell
/home/lee#echo $var #失效啦

/home/lee#ps
  PID TTY          TIME CMD
2256 pts/1    00:00:00 bash
3872 pts/1    00:00:00 bash
3893 pts/1    00:00:00 ps
/home/lee#exit
/home/lee#export var=888 #导出变量var
/home/lee#echo $var #当前有效
888
/home/lee#ps
  PID TTY          TIME CMD
2256 pts/1    00:00:00 bash
3894 pts/1    00:00:00 ps
/home/lee#bash #开启一个子shell
/home/lee#echo $var #依然有效
888
/home/lee#exit

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2008-04-23 17:34 |只看该作者
原帖由 davistar 于 2008-4-23 17:30 发表
一样的

晕, 没看见那个 -x

  1. The  shell  provides  several  ways  to manipulate the environment.  On
  2.        invocation, the shell scans its own environment and creates a parameter
  3.        for  each name found, automatically marking it for export to child pro-
  4.        cesses.  Executed commands inherit the  environment.   The  export  and
  5.        declare  -x  commands allow parameters and functions to be added to and
  6.        deleted from the environment.  If the value of a parameter in the envi-
  7.        ronment  is  modified,  the  new value becomes part of the environment,
  8.        replacing the old.  The environment inherited by any  executed  command
  9.        consists  of the shell's initial environment, whose values may be modi-
  10.        fied in the shell, less any pairs removed by the  unset  command,  plus
  11.        any additions via the export and declare -x commands.
复制代码

[ 本帖最后由 寂寞烈火 于 2008-4-23 17:37 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-04-23 17:38 |只看该作者
原帖由 寂寞烈火 于 2008-4-23 17:34 发表

晕, 没看见那个 -x

  嘿嘿

论坛徽章:
0
6 [报告]
发表于 2008-04-24 06:16 |只看该作者
呵呵.学到了不加-x的不同之处!!!

论坛徽章:
0
7 [报告]
发表于 2008-04-24 08:55 |只看该作者
谢谢楼上各位朋友,但问一下,既然一样,那种写法好呢??我认为第一种更符合编程习惯,大家以为呢?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2008-04-24 09:00 |只看该作者
第二种更通用

论坛徽章:
0
9 [报告]
发表于 2008-04-24 09:15 |只看该作者
原帖由 waker 于 2008-4-24 09:00 发表
第二种更通用

编程一般都是,先声明变量,然后在编写逻辑

export一眼看过去不像在声明变量,呵呵,也许吹毛求疵了。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2008-04-24 09:35 |只看该作者
1.只有高版本的sh才支持declare
2.不需要声明变量是shell的特点
3.按自己的习惯书写

[ 本帖最后由 waker 于 2008-4-24 09:37 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP