Redian新闻
>
Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国

Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国

科技
 
导读:这是一个新教程系列的开始。在这一篇中,你将熟悉 Bash 脚本。                       
本文字数:2657,阅读时长大约:3分钟

这是一个新教程系列的开始。在这一篇中,你将熟悉 bash 脚本。

本系列假定你对 Linux 终端比较熟悉。你不必精通,但了解基础知识会很好。我建议阅读终端基础知识系列。

这个系列适合谁?

任何想开始学习 Bash Shell 脚本的人。

如果你是一名将 Shell 脚本作为课程的一部分的学生,那么本系列适合你。

如果你是普通的桌面 Linux 用户,本系列将帮助你了解在探索各种软件和修复程序时遇到的大多数 Shell 脚本。你还可以使用它来自动执行一些常见的重复性任务。

到本 Bash 基础系列结束时,你应该能够编写简单到中等水平的 Bash 脚本。

该系列的所有章节都有示例练习,你可以边做边学。

🚧 你将在这里学习 Bash Shell 脚本。虽然还有语法基本相同的其他 Shell,但它们的行为在某些方面仍然存在差异。Bash 是最常见和通用的 Shell,因此学习 Shell 脚本从 Bash 开始吧。

你的第一个 Shell 脚本:Hello World!

打开一个终端。现在 创建一个新目录🔗 itsfoss.com 来保存你将在本系列中创建的所有脚本:

  1. mkdir bash_scripts

现在 切换到这个新创建的目录🔗 itsfoss.com

  1. cd bash_scripts

让我们在这里 创建一个新文件🔗 itsfoss.com

  1. touch hello_world.sh

现在,编辑该文件🔗 itsfoss.com 并向其中添加一行 echo Hello World。你可以使用 cat 命令的追加模式(使用 >)执行此操作:

  1. [abhishek@itsfoss]:~/bash_scripts$ cat > hello_world.sh
  2. echo Hello World
  3. ^C

我更喜欢在使用 cat 命令添加文本时添加新行。

按 Ctrl+C 或 Ctrl+D 键退出 cat 命令的追加模式。现在,如果你查看脚本 hellow_world.sh 的内容,你应该只看到一行。

Creating first shell script

关键时刻来了。你已经创建了第一个 Shell 脚本。是时候 运行 Shell 脚本🔗 itsfoss.com 了。

这样做:

  1. bash hello_world.sh

echo 命令只是显示提供给它的任何内容。在这种情况下,Shell 脚本应该在屏幕上输出 “Hello World”。

Run first shell script

恭喜!你刚刚成功运行了第一个 Shell 脚本。多么酷啊!

另一种运行 Shell 脚本的方法

大多数时候,你将以这种方式运行 Shell 脚本:

  1. ./hello_world.sh

这将产生错误,因为作为脚本的文件还没有执行权限。

  1. bash: ./hello_world.sh: Permission denied

给脚本添加执行权限:

  1. chmod u+x hello-world.sh

现在,你可以像这样运行它:

  1. ./hello_world.sh

Run shell scripts

因此,你学习了两种运行 Shell 脚本的方法。是时候让我们将注意力转回 Bash 了。

把你的 Shell 脚本变成 Bash 脚本

感到困惑?实际上,Linux 中有几种可用的 Shell。Bash、Ksh、Csh、Zsh 等等。其中,Bash 是最受欢迎的,几乎所有发行版都默认安装了它。

Shell 是一个解释器。它接受并运行 Linux 命令。虽然大多数 Shell 的语法保持不变,但它们的行为在某些点上可能有所不同。例如,条件逻辑中括号的处理。

这就是为什么告诉系统使用哪个 Shell 来解释脚本很重要。

当你使用 bash hello_world.sh 时,你明确地使用了 Bash 解释器。

但是当你以这种方式运行 Shell 脚本时:

  1. ./hello_world.sh

系统将使用你当前使用的任何 Shell 来运行脚本。

为避免由于不同的语法处理而导致不必要的意外,你应该明确告诉系统它是哪个 shell 脚本。

怎么做?使用释伴(#!)。通常,# 用于 Shell 脚本中的注释。但是,如果 #! 用作程序的第一行,它的特殊用途是告诉系统使用哪个 Shell。

因此,更改 hello_world.sh 的内容,使其看起来像这样:

  1. #!/bin/bash
  2. echo Hello World

现在,你可以像往常一样运行 Shell 脚本,因为你知道系统将使用 Bash Shell 来运行脚本。

Run bash shell script

💡 如果你觉得在终端中编辑脚本文件不方便,作为桌面 Linux 用户,你可以使用 Gedit 或其他 GUI 文本编辑器编写脚本并在终端中运行。

🏋️ 练习时间

是时候练习你学到的东西了。以下是该级别的一些基本练习:

◈ 编写一个打印 “Hello Everyone” 的 Bash 脚本
◈ 编写一个显示当前工作目录的 Bash 脚本(提示:使用 pwd 命令)
◈ 编写一个 Shell 脚本,使用以下列方式打印你的用户名:“My name is XYZ”(提示:使用 $USER

答案可以在社区论坛的 这个专门的帖子🔗 itsfoss.community:443 中讨论。

最后一个练习使用 $USER。这是一个打印用户名的特殊变量。

这就引出了 Bash 基础系列下一章的主题:变量。

请继续关注下面的内容。

(题图:MJ/c8f6458a-84fe-4f77-9a9c-f82fef611935)


via: https://itsfoss.com/create-bash-script/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1955.5 篇
|
贡献: 3524 天
2013-10-25
2023-06-19
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Linux0基础入门,教你如何在Shell中使用正则表达式20号,龚俊颇特直播Cut+总结我与【夕阳红】的故事Agustín Hernández:中美洲建筑背景下的未来主义巨构如何在 RHEL 9/8 上设置高可用性 Apache(HTTP)集群 | Linux 中国Linux ——超级漂亮的 Shell创建你的第一个使用 OpenAI ChatGPT API 的程序 | Linux 中国雷达干扰的基础知识SparkyLinux 7 “Orion Belt” 评测:稳定性与新鲜感的结合 | Linux 中国risiOS:一个易于使用的基于 Fedora 的 Linux 发行版 | Linux 中国上海宝马闯祸了你的旧电脑是 “过时” 了,还是使用 Linux 的机会? | Linux 中国看美国县级初中数学竞赛MOS管基础知识,快来收藏夹吃灰~文革记忆 -- 活学活用忆苦饭一文详解信创基础知识常用的 34 个 Linux Shell 脚本,一定能帮到你!Linux Shell 介绍:Bash、Zsh 和 Fish | Linux 中国【转发收藏】85条初中数学基础知识点全总结,总有你需要的那一点!Bash 基础知识系列 #7:If Else 语句 | Linux 中国40个简单但有效的Linux Shell脚本示例你的第一门编程语言是什么? | Linux 中国如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国Web 安全基础知识梳理(附PDF)【初中物理】初二、三物理基础知识分类汇编探索 Shell 脚本的威力 | Linux 中国算力网络基础知识(2023)如何入门 Linux Shell 脚本编写 | Linux 中国终端基础:在 Linux 中删除文件和文件夹 | Linux 中国Bash 基础知识系列 #5:在 Bash 中使用数组 | Linux 中国Bash 基础知识系列 #3:传递参数和接受用户输入 | Linux 中国Bash 基础知识系列 #6:处理字符串操作 | Linux 中国Bash 基础知识系列 #2:在 Bash 中使用变量 | 技术终端基础:在 Linux 中复制文件和目录 | Linux 中国超越 Bash: 9 个不太知名的 Linux Shell 及其功能 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。