解释器|一个响指能删除计算机里的一半文件?( 二 )
交互式声明变量
看下面这个例子:
文章插图
echo 用来输出字符串 。 执行上面这段程序时 , 会先输出 What is your name? , 之后第三行程序等待用户输入内容 , 把内容存储在 MY_NAME 变量当中 , 最后一行在字符串中
变量作用域
在一个脚本里 , 如果你还没有声明某个变量 , 就调用了它 , Shell 不会给你一个报错 , 它会返回一个空字符串作为结果:
文章插图
在终端执行上面脚本的结果如下:
文章插图
在终端里试试下面的例子:
文章插图
我们先在终端设置了一个变量 MYVAR , 然后通过该界面执行 myvar2.sh 文件 , 结果该文件并没有继承这个变量 。 实际上当我们运行 myvar2.sh 时 , 会生成一个新的 shell 执行该文件 , 此时两个运行环境是分离的 , 只有 Shell 当中的环境变量才能被继承 , 而终端里的 MYVAR 此时只是另一个局部变量而已 。
下面两个定义选自菜鸟教程:
- 局部变量 局部变量在脚本或命令中定义 , 仅在当前 shell 实例中有效 , 其他 shell 启动的程序不能访问局部变量 。
- 环境变量 所有的程序 , 包括 shell 启动的程序 , 都能访问环境变量 , 有些程序需要环境变量来保证其正常运行 。 必要的时候 shell 脚本也可以定义环境变量 。
文章插图
现在 myvar2.sh 成功继承了环境便令 MYVAR , 但是在 myvar2.sh 内改变 MYVAR 并不会影响全局的 MYVAR 。 在终端打印 MYVAR 结果仍旧是 hello:
文章插图
当 myvar2.sh 执行完后 , 执行它的环境将会被销毁 。 如果想让脚本和终端在同一环境下执行程序(此时在脚本内改变变量内容就会影响到整个环境) , 我们可以 source 这个脚本 , 具体的做法是在执行脚本的指令前面加一个 . 或者 source:
文章插图
以上就是本文的三个板块 。 在配置系统环境时经常用到 export 和 source , 如果你之前不明白这两个指令的含义 , 希望这篇文章对你有所帮助 。
参考资料
本文作者:宫业奇
【解释器|一个响指能删除计算机里的一半文件?】声明:本文归 “力扣” 版权所有 , 如需转载请联系 。
- 车企|华为不造车!但任正非加了一个有效期,3年
- 同轴心配合|用SolidWorks画一个直角传动,画四个零件就行
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 丹丹|福佑卡车创始人兼CEO单丹丹:数字领航 驶向下一个十年
- 发展|新基建发展迅猛,必然会是一个巨大的市场机遇
- 缺点|骁龙865+12GB已降至2399,X轴马达+55W快充,缺点只有一个
- 空间|垃圾文件正在吞噬你的C盘空间用这四种方法,还你一个干净的C盘
- 商业|AC有望建立一个商业帝国吗?
- 中国汽车|2020年,我们攒了一个局,串了一条链,下了一盘棋
- 走心|平安夜还在送苹果?太不走心了,教你几招,快来物色一个