Shell 是 linux 的核心部分,它允许你使用各种诸如 cd、ls、cat 等的命令与 Linux 内核进行交互 。
Bash 是 Linux 上众多可用的 Shell 中的一个 。这些 Shell 主要的语法基本相同,但并非完全一样 。Bash 是目前最受欢迎的 Shell,并在大多数 Linux 发行版中被设为默认 Shell 。
当你打开一个终端或 SSH 会话时,即使你无法真切地看到它,你其实已经在运行着一个 Shell 。
文章插图
当你输入一个命令,它会被 Shell 解释 。如果命令和语法是正确的,它就会被执行,否则你会看到一个错误 。
当你可以直接运行 Linux 命令时,为什么还需要 Bash 脚本?你可以直接在终端输入命令,它们就会被执行:
$ echo "hello world"hello world
并且,同样的操作也可以在脚本中进行:$ cat >> script.sh#!/bin/bashecho "hello world"$ bash script.shhello world
那么,为什么我们需要 Shell 脚本呢?因为你不必一遍又一遍地输入同一个命令,你只需运行 Shell 脚本即可 。此外,如果你的脚本中有复杂的逻辑,把所有的命令都输入到终端中可能并不是一个好主意 。
例如,如果你输入下面的命令,它会奏效,但这并不容易理解 。不断地输入相同的命令(甚至要在 Bash 历史记录中搜索)会造成困扰 。
if [ $(whoami) = 'root' ]; then echo "root"; else echo "not root"; fi
相反,你可以把命令放进 shell 脚本中,这样就更容易理解并且可以轻松运行了:#!/bin/bashif [ $(whoami) = 'root' ]; thenecho "You are root"elseecho "You are not root"fi
这还是比较简单的情况 。尝试想象一下,一个复杂的脚本可能有五十行或一百行!你将会学到什么?在这个 Bash 脚本教程中,有九个部分 。你将会学到:
创建并运行你的第一个 Bash Shell 脚本
使用变量
在你的 Bash 脚本中传递参数和接受用户输入
进行数学计算
操作字符串
使用条件语句,例如 if-else
使用 for、while 和 until 循环
创建函数
所有的部分都会给你一个简单的例子 。如果你愿意,你可以通过访问每个部分的详细章节来更深入地学习 。这些章节也都包含了实践练习 。
这个教程的目标读者是谁?这个教程适合任何想要开始学习 Bash Shell 脚本的人 。
如果你是一名学生,而你的课程里包括了 Shell 脚本,那么这个系列就是为你准备的 。
如果你是一个常规的桌面 Linux 用户,这个系列将会帮助你理解在探索各种软件和修复问题时遇到的大多数 Shell 脚本 。你也可以使用它来自动化一些常见的、重复的任务 。
在这个 Bash 脚本教程结束时,你应该可以编写简单的 Bash 脚本 。
希望你已经拥有 Linux 命令行和编程语言的基础知识 。
1.编写你的第一个 Bash Shell 脚本创建一个名为 hello.sh 的新文件:
nano hello.sh
这将在终端中打开 nano 编辑器 。在其中输入以下几行代码:#!/bin/bashecho "Hello World"
通过按 Ctrl+X 键可以保存并退出 nano 编辑器 。现在,你可以以以下方式运行 Bash Shell 脚本:
bash hello.sh
你应该可以看到以下的输出:Hello World
另一种方式是首先赋予脚本执行权限:chmod u+x hello.sh
然后这样运行它:./hello.sh
你也可以使用基于图形用户界面的文本编辑器来编写脚本 。这可能更适合编写较长的脚本 。然而,你需要切换到保存脚本的目录中才能运行它 。恭喜!你刚刚运行了你的第一个 Bash 脚本 。
2、在 Bash 脚本中使用变量变量的声明方式如下:
var=some_value
然后可以像这样访问变量:$var
在声明变量时,等号(=)前后不能有空格 。我们通过添加一个变量来修改前面的脚本 。
#!/bin/bashmessage="Hello World"echo $message
如果运行这个脚本,输出仍然会保持不变 。Hello World
3、向 Bash 脚本传递参数你可以在运行 Bash 脚本时以以下方式传递参数:
./my_script.sh arg1 arg2
在脚本中,你可以使用 $1 来代表第 1 个参数,用 $2 来代表第 2 个参数,以此类推 。$0 是一个特殊变量,它代表正在运行的脚本的名字 。
推荐阅读
- 自学编程需要安装哪些基础软件
- 当前页面脚本发生错误怎么办 proe当前页面脚本发生错误怎么办
- 新手适合学的四种编程语言,你pick哪一个?
- 掌握C/C++协程编程,轻松驾驭并发编程世界
- 软件工程的核心问题并非是编程
- Apache Spark 的新编程语言
- 出租车计价c语言编程 出租车计价
- Tars-Java网络编程源码分析
- 编程是学些什么东西……新手学编程应该先学什么?
- 程序员越“老”就越看不上 AI 辅助编程工具?Stack Overflow 2023 开发者调查 AI 特别报告