2、Shell 脚本入门
admin
2024-03-05 07:10:17
0

文章目录

  • 2、Shell 脚本入门
    • 2.1 脚本格式
    • 2.2 第一个 Shell 脚本:helloworld.sh
      • 第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)
      • 第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
      • 【了解】第三种:在脚本的路径前加上“.”或者 source


尚硅谷2022版Linux扩展篇Shell教程-讲师:武晟然

壁立千仞 无欲则刚

2、Shell 脚本入门

2.1 脚本格式

后缀是.sh不写也是可以运行,但是约定俗成
脚本文本以#!/bin/bash开头(指定解析器)
文本#为注释

2.2 第一个 Shell 脚本:helloworld.sh

(1)需求:创建一个 Shell 脚本,输出 helloworld
(2)案例实操:

[root@centos7-101 ~]# mkdir scripts
[root@centos7-101 scripts]# touch helloworld.sh
[root@centos7-101 scripts]# vim helloworld.sh

在 helloworld.sh 中输入如下内容

#!/bin/bash
echo "helloworld" 

(3)脚本的常用执行方式

第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)

sh+脚本的相对路径(当前路径./)

[root@centos7-101 scripts]# sh ./helloworld.sh 
hello word

sh+脚本的绝对路径

[root@centos7-101 scripts]# sh /root/script/helloworld.sh 
hello word

bash+脚本的相对路径

[root@centos7-101 scripts]# bash ./helloworld.sh 
hello word
[root@centos7-101 scripts]# bash helloworld.sh 
hello word

bash+脚本的绝对路径

[root@centos7-101 scripts]# bash /root/script/helloworld.sh 
hello word

第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

①首先要赋予 helloworld.sh 脚本的+x 权限

[root@centos7-101 scripts]# chmod u+x helloworld.sh

②执行脚本
相对路径

[root@centos7-101 scripts]# ./helloworld.sh 
hello word

绝对路径

[root@centos7-101 scripts]# /root/script/helloworld.sh 
hello word

注意:

第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。

第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

想要写helloworld.sh直接执行,需要在环境变量中添加helloworld.sh所在的目录。

[root@centos7-101 scripts]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

【了解】第三种:在脚本的路径前加上“.”或者 source

①有以下脚本

[root@centos7-101 scripts]# touch test.sh
[root@centos7-101 scripts]# vim test.sh
[root@centos7-101 scripts]# chmod u+x ./test.sh 
[root@centos7-101 scripts]# cat test.sh 
#!/bin/bash
# 对环境变量A赋值
A=5
# 取出A值
echo $A

②分别使用 sh,bash,./ 和 . 的方式来执行,结果如下:
bash

[root@centos7-101 scripts]# bash test.sh 
5
[root@centos7-101 scripts]# echo $A

sh

[root@centos7-101 scripts]# sh test.sh 
5
[root@centos7-101 scripts]# echo $A

./

[root@centos7-101 scripts]# ./test.sh 
5
[root@centos7-101 scripts]# echo $A

.

[root@centos7-101 scripts]# . test.sh 
5
[root@centos7-101 scripts]# echo $A
5

与前两种区别:

source是bash的内置命令,本身是csh中的,另一种实现是bash的”.“,所以”.“与source效果相同。

bash、sh、./helloworld.sh本质上都是打开了一个子Shell进程,当前的Shell环境不受影响,

“.”或者 source 是不启动子Shell进程的,直接在当前的Shell进程中执行,好处是没有父子环境嵌套,可以设置一些环境变量,如果有父子嵌套,在子Shell设置环境变量,父Shell中是获取不到的。

原因:
前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。

第三种,也就是使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需要 source 一下的原因。

开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的当前变量,父 shell 是不可见的

相关内容

热门资讯

千元户外品牌,一股班味 北京世纪金源,曾经的“亚洲最大购物中心”,最近换了一副面孔。 这里俨然成了一座“户外痛城”。从外面看...
千亿分红如期派发,银行股为何依... 如何穿越周期、构建新的护城河,不仅是对银行战略定力的考验,更是其估值能否真正筑底回升的决定性变量 文...
如何选择广州OPC一人轻资产跨... 当下,出海创业成为不少个体经营者和中小企业拓展市场的选择,其中OPC一人轻资产模式因投入低、灵活性高...
原创 若... 时间来到2026年7月,翻看这半年的账本会发现一件挺矛盾的事,家里餐桌上的菜价、货架上的日用品价格几...
欧美企业掀起向中国AI基础设施... 2026年6月,多家海外企业转向中国AI:加密货币交易平台Coinbase将其定为工程师默认工具,美...
天风·轻纺 | 九部门发文鼓励... 我们认为本次文件或更多从供给侧推动零售业升级,鼓励新型优质零售;从网点布局、产品品质、定价体系,消费...
华夏基金(香港)行政总裁甘添专... 中国基金报记者 叶诗婕 在互联互通机制持续深化、全球资产配置需求蓬勃涌现的当下,香港ETF市场正经历...
华尔街的新策略:剔除马斯克 华尔街正将“剔除马斯克”变为一种交易策略。 随着SpaceX以创纪录速度“闪电入指”,引发被动资金大...
500万人的牵挂,有了暖心答案 大众卫生报·新湖南客户端7月9日讯(通讯员 肖心玥 禹晓东)50多天前,一段重型货车碾压伤患者的急诊...
杨山海:黄金,白银下周有放量上... 杨山海:黄金,白银下周有放量上涨的可能! 趁着周末有空,我给大家好好复盘下上周的黄金、白银行情,...
原创 马... #马斯克再出狂言 #:# 马斯克要让 SpaceX 价值超整个地球 #,马斯克又一次凭借魔幻言论刷屏...
AI存储巨头遭遇冰火两重天:S... 存储巨头SK海力士带着265亿美元的庞大募资计划,强势叩开美国资本市场的大门。7月10日,SK海力士...
为什么基金合同要明确投资限制? 基金合同明确投资限制具有多方面的重要意义,对投资者、基金管理人以及整个金融市场都有着不可忽视的作用。...
基金运作如何影响申赎安排更稳妥... 基金的运作机制与申赎安排之间存在着紧密的联系,合理的申赎安排能够确保基金的平稳运作,同时保障投资者的...
破解市场算法的人:粒子物理学博... 萨米尔·瓦尔马博士(Dr. Samir Varma)是一位非常特殊的交易者。他拥有粒子物理学博士背景...
曙光8000正式落成 中国AI... 上证报中国证券网讯(记者 王乔琪)7月9日至7月11日,光合组织2026智能计算应用大会在郑州举行,...
CEO亲自来华,5年在华酒店近... 台州仙居铂尔曼酒店。源自:企业官网 本报(chinatimes.net.cn)记者张蓓 黄指南 深圳...
MiniMax再跌10%!CE... 瑞财经 严明会7月10日,MiniMax(0100.HK)完成新一轮160亿港币融资。当日早盘,Mi...
原创 中... 新能源越跑越快,镍一下子成了绕不过去的原材料“风口”,可就在全球汽车行业拼新能源的时候, 印尼悄悄收...