知识汲取者 2022-02-24 21:27 采纳率: 0%
浏览 35

在shell编程学习中,关于变量的赋值问题

问题背景:我在Linux的超级终端中先创建一个shell文件并在文件中对name赋值,然后用bash去执行这个文件,最后为什么不能在指令窗口直接输出name这个变量的值。只有用source执行文件后,才能在指令窗口输出赋值后的变量

[ghp@localhost ~]$ echo $name

[ghp@localhost ~]$ vim name.sh
[ghp@localhost ~]$ cat name.sh
name="zhangsan"
[ghp@localhost ~]$ sh name.sh    /*用bash解释器执行脚本后仍然输出不了name变量的值*/
[ghp@localhost ~]$ echo $name

[ghp@localhost ~]$ source name.sh  /*但是用source执行脚本却可以输出name变量的值*/
[ghp@localhost ~]$ echo $name
zhangsan
[ghp@localhost ~]$ 


想要的答案: 其中的详细原因,请求您的不吝赐教,在此万分感谢

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2022-02-24 21:40
    关注

    因为你修改后,没有去执行,需要刷新修改后的文件,使其在当前shell进程中生效。
    source命令用法:

    source FileName
    

    作用:在当前bash环境下读取并执行FileName中的命令。
    source(或点)命令通常用于重新执行刚修改的初始化文档。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 2月24日
  • 创建了问题 2月24日