shell变量的一点总结
来源:互联网 发布:pp软件源 编辑:程序博客网 时间:2024/06/05 17:05
下午研究了下source . 命令,做下总结:
假设有脚本 test.sh,内容(比较简单,能说明问题即可)如下:
#!/bin/bash
export str_1="hi"
str_2="hello"
echo $str_1
echo $str_2
I.在当前shell环境中执行 ./test.sh 得到:
hi
hello
hello
结果在意料中。在当前shell中再执行:echo $str_1 $str_2
nothing,什么都没有输出,why?
II.在当前shell环境中执行 source test.sh or . test.sh 得到
hi
hello
hello
结果在意料中。在当前shell中再执行:echo $str_1 $str_2
输出 hi hello, why?
执行bash,再起一个shell,执行:echo $str_1 $str_2
输出 hi, why?
为什么会这样?
A问题I:
在执行./test.sh,会新起一个进程,str_1,str_2都属于这个进程里的变量,当进程执行完后,这俩变量也被销毁了。再在当前shell中,想得到这俩变量的值,就不可能啦。
A问题II:
使用source or. 执行脚本,会在当前shell进程下执行,既然是当前进程,echo时,当然是可以得到变量的值。在使用bash命令新起shell后,作为子shell,共享父shell的环境变量,export str_1="hi", export让str_1以环境变量的身份存在,于是乎在子shell中,也是可以得到它的值,str_2做为父shell的局部变量,在子shell中当然不存在,打印为空。
0 0
- shell变量的一点总结
- 服务器变量的一点总结
- linux 中的局部变量、全局变量、shell 变量的总结
- linux 中的局部变量、全局变量、shell 变量的总结
- shell变量替换总结
- 指针,数组,变量参数传递的一点总结
- Shell和MakeFile中变量的总结说明
- Shell编程之Shell变量学习总结
- javascript变量作用域一点总结
- ThreadLocal,静态变量,实例变量,局部变量的线程安全,回复:ByteBuffer 到底怎么用?网络编程中一点总结!
- ThreadLocal,静态变量,实例变量,局部变量的线程安全,回复:ByteBuffer 到底怎么用?网络编程中一点总结!
- ThreadLocal,静态变量,实例变量,局部变量的线程安全,回复:ByteBuffer 到底怎么用?网络编程中一点总结!
- Shell 变量的变量用法
- shell变量的组合变量
- shell if 的一点体会
- shell的变量:
- Linux的shell变量
- shell变量的类型
- iOS 获取 当前设备 可用内存 及当前 应用 所占内存 (转)
- java之date
- dedecms取消远程图片转为本地图片
- 老大写得一个很高大上的Makefile,包含很多语法:
- remove bom
- shell变量的一点总结
- java之Math
- PHP中register_globals参数设置
- java之反射
- 不用用户使用同一用户名登陆,挤掉前面那个人(Session,Listen)
- Android应用中如何调用系统闹钟及日历
- leetcode之Maximum Product Subarray
- 第九周项目3.2 输出点阵2
- Android无法导入下载好的项目(和Eclipse中已经存在的项目命名一样导致冲突)解决办法