知识汲取者 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日

悬赏问题

  • ¥15 关于#matlab#的问题:有没有什么其他办法能够保证不退出进程(相关搜索:matlab调用)
  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧