./test.sh 和 . test.sh的区别,案例分析

这篇具有很好参考价值的文章主要介绍了./test.sh 和 . test.sh的区别,案例分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. . test.sh

test.sh

#!/bin/bash

declare -A myMap
myMap["key1"]="value1"
myMap["key2"]="value2"
myMap["key3"]="value3"


for key in "${!myMap[@]}"; do
    echo "Key: $key, Value: ${myMap[$key]}"
done  

执行 . test.sh输出如下:

root@hg-pc:/home/hg/Desktop# . test.sh 
Key: key2, Value: value2
Key: key3, Value: value3
Key: key1, Value: value1

此时,修改test.sh,将赋值操作全部去掉,同样执行 . test.sh

```bash
#!/bin/bash

declare -A myMap

for key in "${!myMap[@]}"; do
    echo "Key: $key, Value: ${myMap[$key]}"
done  

输出如下:

root@hg-pc:/home/hg/Desktop# . test.sh 
Key: key2, Value: value2
Key: key3, Value: value3
Key: key1, Value: value1

myMap明明是个空的,为什么还能打印出数据???
使用点号(.)和空格来执行一个脚本,后面跟着脚本的文件名。这种方式在Shell中被称为“点命令”(Dot command)或“source”命令。它的作用是在当前Shell环境中执行指定的脚本。也可以使用source test.sh来实现相同的效果。使用. test.sh执行脚本时,脚本文件会在当前Shell环境中执行,不会创建新的子进程。脚本文件中的环境变量和函数会影响到当前Shell的环境。这种执行方式通常用于加载配置文件或在当前Shell中定义函数和变量。

也可以这么理解,第一次执行赋值后,哪怕第二次把赋值操作给去了,它也能打印出数据,因为隶属于同一个终端,,,
此时开启一个新的终端,再次执行 . test.sh,可以看出,,没有任何输出。。。

root@hg-pc:/home/hg/Desktop# . test.sh 
root@hg-pc:/home/hg/Desktop# 

2. . /test.sh

#!/bin/bash

num=23
echo "### ${num}"
root@hg-pc:/home/hg/Desktop# . test.sh
### 23

第一次执行后, 这个num在当前终端中始终存在。


#!/bin/bash

echo "### ${num}"
root@hg-pc:/home/hg/Desktop# . test.sh 
### 23

所以即使此处直接输出num,也还能打印出值。




下面来看 ./test.sh

开启一个新终端,命名为2号终端。

#!/bin/bash

num=23
echo "### ${num}"
root@hg-pc:/home/hg/Desktop# ./test.sh 
### 23


仍然在2号终端中执行。

#!/bin/bash

echo "### ${num}"
root@hg-pc:/home/hg/Desktop# ./test.sh 
### 

使用./test.sh执行脚本时,Shell会创建一个子进程来执行脚本文件。脚本文件中的环境变量和函数在子进程中生效,但不会影响到当前Shell的环境文章来源地址https://www.toymoban.com/news/detail-544649.html



总结:./test.sh是在子进程中执行脚本文件,而 test.sh是在当前Shell环境中执行脚本文件。

到了这里,关于./test.sh 和 . test.sh的区别,案例分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spark案例分析-搜索引擎日志分析案例

    1.业务分析 2.数据截图 3.代码实现:         main.py:         defs.py:

    2024年02月08日
    浏览(46)
  • Shell脚本开发:printf和test命令的实际应用

    目录 Shell printf 命令 打印简单文本 Shell test 命令 1、文件测试 2、字符串比较 3、整数比较 逻辑运算: 当你使用Shell中的printf命令时,它可以帮助你格式化和输出文本。 打印简单文本 这将简单地打印字符串\\\"Hello, World!\\\",并在末尾添加一个换行符n来换行。 当你使用Shell中的t

    2024年02月10日
    浏览(38)
  • 对应分析介绍及SPSS案例分析

    在开展统计分析的过程中,分类变量(定序和定类变量)是我们研究的一个重点。通常我们分析分类变量间关系时,最常用的分析方法是卡方检验,其次是逻辑回归和对数线性模型等。 如果类别变量的分类较少,我们可以通过卡方检验判断行变量和列变量间是否相互独立,同

    2024年02月13日
    浏览(48)
  • python案例讲解视频,python简单案例分析

    大家好,给大家分享一下python案例讲解视频,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!   前言 Python 是一种面向对象、解释型、弱类型的脚本语言,它也是一种功能强大而完善的通用型语言。 相比其他编程语言(比如 Java),Python 代码非常简单,上手

    2024年04月11日
    浏览(45)
  • Python案例分析|文本相似度比较分析

     本案例通过设计和实现有关文本相似度比较的类Vector和Sketch,帮助大家进一步掌握设计Python类来解决实际问题的能力。 通过计算并比较文档的摘要可实现文本的相似度比较。 文档摘要的最简单形式可以使用文档中的k-grams(k个连续字符)的相对频率的向量来表示。假设字符

    2024年02月16日
    浏览(55)
  • C++软件分析工具案例分析集锦汇总

    本文是 C++常用软件分析工具从入门到精通案例集锦 专栏的导航贴( 点击链接,跳转到专栏主页,欢迎订阅,持续更新… )。 专栏介绍 :根据近几年C++软件异常排查的项目实践,详细地讲述如何使用PE工具、Dependency Walker、GDIView、Process Explorer、Process Monitor、API Monitor、Clum

    2024年02月11日
    浏览(52)
  • python数据分析案例——天猫订单综合分析

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 什么是数据分析 明确目的–获得数据(爬虫,现有,公开的数据)–数据预处理——数据可视化——结论 准备 环境使用: 在开始写我们的代码之前,我们要准备好运行代码的程序 Anaconda (python3.9) – 识别我们写的代码 开发工

    2024年02月03日
    浏览(49)
  • C++常用软件分析工具案例分析集锦汇总

    本文是 C++常用软件分析工具从入门到精通案例集锦 专栏的导航贴( 点击链接,跳转到专栏主页,欢迎订阅,持续更新… )。 专栏介绍 :根据近几年C++软件异常排查的项目实践,详细地讲述如何使用PE工具、Dependency Walker、GDIView、Process Explorer、Process Monitor、API Monitor、Clum

    2024年02月11日
    浏览(43)
  • es 查询案例分析

    有这样一种场景,比如我们想搜索 title:Brown fox body:Brown fox 文章索引中有两条数据,兔子和狐狸两条数据 结果肯定是想要数据二,狐狸优先展示 但是,然后搜索的时候,会对搜素词 Brown fox 进行分词,导致数据一优先级更高 可以看下结果: 优先展示的是兔子,有 0.8 的算

    2024年03月19日
    浏览(50)
  • GreatSQL 死锁案例分析

    客户业务发生死锁的报错,根据业务程序日志及业务流程,发现造成死锁的原因是:事务1 delete + insert ,事务2 delete + insert 2个事务交替执行导致的死锁;由于GAP锁阻塞了插入意向锁,并且当delete的数据存在时死锁不会发生,当delete的数据不存在时,会发生死锁。 本次测试基

    2024年04月22日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包