编写一个shell脚本test.sh,内容如下
a='测试执行方式'
echo $a
方式1
使用路径的方式执行
chmod a+x test.sh
./test.sh
执行结果如下
当脚本执行之后,再执行echo $a
的时候,不会得到测试执行方式
这个值。因为在运行脚本的时候,是开了一个shell的子进程,脚本执行结束之后,这个子进程也结束了。再回到父进程执行echo $a
是得不到任何值的。
方式2
使用sh test.sh
执行脚本
执行结果如下:
此种执行方式同方式1
方式3
使用source test.sh
执行脚本
执行结果如下:
可以看到,与上述两种方式不同,脚本执行结束之后,echo $a
得到了相同的结果。
这是因为使用source
执行shell脚本,并不会新开子进程,而是就在当前进程来执行,所以脚本执行结束之后,变量的值还能获取到