论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
主机系统
›
linux
›
Linux工作原理11 Shell脚本
Linux工作原理11 Shell脚本
大连密封材料
金牌会员
|
2024-7-28 11:59:28
|
显示全部楼层
|
阅读模式
楼主
主题
815
|
帖子
815
|
积分
2445
11 shell脚本
假如你能在 shell 中输入命令,你就能编写 shell 脚本。shell 脚本(也称为 Bourne shell 脚本)是写在文件中的一系列命令;shell 会从文件中读取这些命令,就像在终端中输入命令一样。
11.1 shell脚本基础
Bourne shell 脚本一般以下面一行开始,表示 /bin/sh 步调应实行脚本文件中的命令。(确保脚本文件开头没有空白)。
#!/bin/sh
复制代码
在本书的其他脚本中,你会看到#!你可以在#/bin/sh行后列出任何希望shell实行的命令。例如
#!/bin/sh
#
# Print something, then run ls
echo About to run the ls command.
ls
复制代码
shell 会忽略 # 字符之后一行的任何内容。利用注释来解释脚本中其他人阅读代码时可能难以理解的部门,或在日后重温代码时唤起自己的记忆。
与 Unix 体系上的任何步调一样,您必要为 shell 脚本文件设置可实行位,但同时也必须设置读取位,以便 shell 能够读取文件。最简朴的方法如下:
$ chmod +rx script
复制代码
这条 chmod 命令答应其他用户读取和实行脚本。假如不想如许,请利用绝对模式 700(有关权限的复习,请参阅第 2.17 节)。
创建 shell 脚本并设置读取和实行权限后,可以将脚本文件放在命令路径中的某个目次下,然后在命令行上运行脚本名称即可。假如脚本位于当前工作目次中,也可以运行 ./script,大概利用完整路径名。
例如,运行名为 myscript 的脚本会导致内核运行 /bin/sh myscript。
了解了基础知识后,让我们来看看 shell 脚本的一些限制。
Shebang,也称为 Hashbang 或 Hash-bang,是一种特殊的语法,通常出现在文本文件的第一行的前两个字符:#!。它的作用是指定脚本应该由哪个解释器来实行。用途如下:
明白指定解释器: 不同的脚本语言有不同的解释器(比如 Bash、Python、Perl 等)。Shebang 告诉操纵体系,应该利用哪个解释器来运行这个脚本,避免了歧义。
直接实行脚本: 有了 Shebang,你就可以直接运行脚本文件,而不必要每次都指定解释器。
跨平台兼容性: 不同的体系可能默认的 shell 或解释器不同,Shebang 确保了脚本在不同体系上的可移植性。
Shebang 不一定是 #!/bin/sh;它可以构建为运行体系中任何接受脚本输入的步调,例如 #!/usr/bin/python,以运行 Python 步调。别的,你可能会碰到包罗 /usr/bin/env 的不同模式的脚本。例如,你可能会在第一行看到类似 #!/usr/bin/env python 的内容。这会指示env工具运行 python。如许做的原因很简朴:env 会在当前的命令路径中查找要运行的命令,因此不必要为可实行文件指定一个尺度位置。缺点是命令路径中第一个匹配的可实行文件可能不是你想要的。
11.1.1 Shell 脚本的局限性
Bourne shell 可以相对轻松地操纵命令和文件。在第 2.14 节中,我们了解了 shell 重定向输出的方法,这也是 shell 脚本编程的重要元素之一。然而,shell 脚本只是 Unix 编程的一种工具,固然脚本具有相当强大的功能,但也有其局限性。
shell 脚本的主要上风之一是可以简化和自动实行原本可以在 shell 提示符下实行的任务,例如处理成批文件。但是,假如你想剔除字符串、实行重复的算术盘算或访问复杂的数据库,大概假如你想利用函数和复杂的控制布局,你最好利用 Python或awk如许的脚本语言,甚至可能利用 C 如许的编译语言(这一点很重要,以是你会在本章中看到)。
末了,要留意 shell 脚本的巨细。shell 脚本要简短。Bourne shell 脚本并不意味着要很大,尽管你无疑会碰到一些庞然大物。
11.2 引用和字面量
在利用 shell 和脚本的过程中,最令人狐疑的一点就是不知道什么时候以及为什么要利用引号(quotes)和其他标点符号。假设您想打印 $100 字符串,请实行以下操纵:
$ echo $100
00
$ echo "$100"
00
$ echo '$100'
$100
复制代码
11.2.1 字面量
当你利用引号时,通常是要创建一个字面形式,即 shell 在将其传递到命令行之前不应分析(或试图更改)的字符串。除了刚才例子中的 $ 之外,当你想将 * 字符传递给 grep 等命令而不是让 shell 睁开它,以及当你必要在命令中利用分号 (
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
大连密封材料
金牌会员
这个人很懒什么都没写!
楼主热帖
Kubernetes(k8s)基础概念介绍 ...
这是啥SQL,室友看了人傻了
Fastjson反序列化
Java EnumMap putAll()方法具有什么功 ...
【游戏客户端与服务器面试题】-- 2022 ...
rk3399pro移植openharmony3.0移植笔记2 ...
Postgres14.4(Docker安装)
太厉害了,终于有人能把文件上传漏洞讲 ...
ClickHouse(02)ClickHouse架构设计介绍 ...
python带你采集商家商品数据信息~带你 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表