Abhishek Prakash 发布的文章

在本系列的第四章,学习在 Bash 中使用基本数学运算。

你可以使用 Bash 脚本做很多事情。对变量执行简单的算术运算就是其中之一。

Bash shell 中算术运算的语法如下:

$((arithmetic_operation))

假设你必须计算两个变量的总和。你这样做:

sum=$(($num1 + $num2))

(()) 内空格的使用没有限制。你可以使用 $(( $num1+ $num2))$(( $num1+ $num2 )) 或者 $(( $num1+ $num2 ))。它们都一样。

在通过示例详细讨论之前,我先分享一下它支持的算术运算符。

Bash 中的基本算术运算符

以下是 Bash shell 中算术运算符的列表。

运算符描述
+加法
-减法
*乘法
/整数除法(不带小数)
%模除法(仅余数)
**求幂(a 的 b 次方)
? Bash 不支持浮点数(小数)。你必须使用其他命令(例如 bc)来处理它们。

Bash 中的加法和减法

让我们通过编写一个脚本来看看它,该脚本从用户那里获取两个数字,然后打印它们的总和和减法。

#!/bin/bash

read -p "Enter first number: " num1
read -p "Enter second number: " num2

sum=$(($num1+$num2))
sub=$(($num1-$num2))
echo "The summation of $num1 and $num2 is $sum"
echo "The substraction of $num2 from $num1 is $sub"

我相信你熟悉上一章中使用 read 命令来 在 Bash 中接受用户输入

你应该关注这两行:

sum=$(($num1+$num2))
sub=$(($num1-$num2))

将此脚本保存为 sum.sh 并运行它。给它一些输入并检查结果。

Example of addition and subtraction in Bash shell script

Bash 中的乘法

现在让我们转向乘法。

这是一个将公里转换为米的示例脚本(这给美国读者带来了麻烦 ?)。作为参考,1 公里等于 1000 米。

#!/bin/bash

read -p "Enter distance in kilometers: " km
meters=$(($km*1000))

echo "$km KM equals to $meters meters"

将脚本保存为 multi.sh,赋予其执行权限并运行它。这是一个示例输出:

Multiplication in bash script

看起来不错,不是吗? 让我们继续进行除法。

Bash 脚本中的除法

让我们用一个非常简单的脚本来看看除法:

#!/bin/bash

num1=50
num2=5

result=$(($num1/$num2))

echo "The result is $result"

你很容易猜到结果:

The result is 10

没关系。但是让我们更改数字并尝试将 50 除以 6。结果如下:

The result is 8

但这不正确。 正确答案应该是 8.33333。

这是因为 Bash 默认情况下只处理整数。你需要额外的命令行工具来处理浮点(小数)。

最流行的工具是 bc,它是一种处理数学运算的非常强大的计算器语言。不过,你现在不需要关注细节。

你必须通过管道将算术运算“回显”给 bc

echo "$num1/$num2" | bc -l

于是,将之前的脚本修改为:

#!/bin/bash

num1=50
num2=6

result=$(echo "$num1/$num2" | bc -l)

echo "The result is $result"

现在你得到结果:

The result is 8.33333333333333333333

请注意 result=$(echo "$num1/$num2" | bc -l),它现在使用你在 本系列第 2 章 中看到的命令替换。

-l 选项加载标准数学库。默认情况下,bc 最多保留 20 位小数。你可以通过以下方式将比例更改为较小的位数:

result=$(echo "scale=3; $num1/$num2" | bc -l)

让我们看看 Bash 中浮点的更多示例。

在 Bash 脚本中处理浮点

让我们修改 sum.sh 脚本来处理浮点。

#!/bin/bash

read -p "Enter first number: " num1
read -p "Enter second number: " num2

sum=$( echo "$num1+$num2" | bc -l)
sub=$( echo "scale=2; $num1-$num2" | bc -l)
echo "The summation of $num1 and $num2 is $sum"
echo "The substraction of $num2 from $num1 is $sub"

现在尝试运行它,看看是否可以正确处理浮点:

Floating points in bash script

?️? 练习时间

是时候一起做一些数学和 Bash 练习了。

练习 1:创建一个脚本,接受以 GB 为单位的输入并以 MB 和 KB 为单位输出其等效值。

练习 2:编写一个带有两个参数并以指数格式输出结果的脚本。因此,如果输入 2 和 3,输出将为 8,即 2 的 3 次方。

提示:使用幂运算符 **

练习 3:编写一个将摄氏度转换为华氏度的脚本。

提示:使用公式 F = C x (9/5) + 32。你必须在此处使用 bc 命令。

你可以在社区中讨论练习及其方案。

在下一章中,你将 了解 Bash 中的数组。敬请关注。

(题图:MJ/8a9dfb90-99a4-4203-bc44-d805d09bc16f)


via: https://itsfoss.com/bash-arithmetic-operation/

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

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

在 Bash 基础系列的这一章中,学习如何向 Bash 脚本传递参数并使它们具有交互性。

来让 Bash 脚本有参数吧 ?

你可以通过向 Bash 脚本传递变量来使其更加有用和更具交互性。

让我通过示例详细向你展示这一点。

将参数传递给 Shell 脚本

当你运行 Shell 脚本时,你可以按以下方式向其中添加其他变量:

./my_script.sh var1 var2

在脚本内部,你可以使用 $1 作为第一个参数,$2 作为第二个参数,依此类推。

? $0 是一个特殊变量,保存正在执行的脚本的名称。

让我们通过一个实际的例子来看看。切换到保存练习 Bash 脚本的目录。

mkdir -p bash_scripts && cd bash_scripts

现在,创建一个名为 arguments.sh (我想不出更好的名称)的新 Shell 脚本,并向其中添加以下行:

#!/bin/bash

echo "Script name is: $0"
echo "First argument is: $1"
echo "Second argument is: $2"

保存文件并使其可执行。现在像往常一样运行脚本,但这次向其中添加任意两个字符串。你将看到屏幕上打印的详细信息。

? 参数由空格(空格、制表符)分隔。如果参数中有空格,请使用(英文)双引号将其引起来,否则它将被视为单独的参数。

Pass arguments to the bash scripting

? Bash 脚本最多支持 255 个参数。但对于参数 10 及以上,你必须使用花括号 ${10}${11}...${n}

正如你所看到的,$0 代表脚本名称,而其余参数存储在编号变量中。你还可以在脚本中使用一些其他特殊变量。

特殊变量变量描述
$0脚本名称
$1$2、……$9脚本参数
${n}脚本参数从 10 到 255
$#参数数量
$@所有参数
$$当前 Shell 的进程 ID
$!最后执行的命令的进程 ID
$?最后执行命令的退出状态
?️‍♀️ 修改上面的脚本以显示参数数量。

如果参数数量不匹配怎么办?

在上面的示例中,你为 Bash 脚本提供了两个参数并在脚本中使用了它们。

但是,如果你只提供一个参数或三个参数怎么办?

让我们实际做一下吧。

Passing fewer or more arguments to bash script

正如你在上面所看到的,当你提供的参数超出预期时,结果仍然是一样的。不使用其他参数,因此不会产生问题。

但是,当你提供的参数少于预期时,脚本将显示空白。如果脚本的一部分依赖于缺少的参数,这可能会出现问题。

接受用户输入并制作交互式 Bash 脚本

你还可以创建提示用户通过键盘提供输入的 Bash 脚本。这使你的脚本具有交互性。

read 命令提供了此功能。你可以这样使用它:

echo "Enter something"
read var

上面的 echo 命令不是必需的,但最终用户不会知道他们必须提供输入。然后用户在按回车键之前输入的所有内容都存储在 var 变量中。

你还可以显示提示消息并在单行中获取值,如下所示:

read -p "Enter something? " var

让我们看看它的实际效果。创建一个新的 interactive.sh Shell 脚本,内容如下:

#!/bin/bash

echo "What is your name, stranger?"
read name
read -p "What's your full name, $name? " full_name
echo "Welcome, $full_name"

在上面的示例中,我使用 name 变量来获取名称。然后我在提示中使用 name 变量,并在 full_name 变量中获取用户输入。我使用了两种使用 read 命令的方法。

现在,如果你授予执行权限,然后运行此脚本,你会注意到该脚本显示 What is your name, stranger?,然后等待你从键盘输入内容。你提供输入,然后它会显示 What's your full name 消息,并再次等待输入。

以下是供你参考的示例输出:

Interactive bash shell script

?️ 练习时间

是时候练习你所学到的东西了。尝试为以下场景编写简单的 Bash 脚本。

练习 1:编写一个带有三个参数的脚本。你必须使脚本以相反的顺序显示参数。

预期输出:

abhishek@itsfoss:~/bash_scripts$ ./reverse.sh ubuntu fedora arch
Arguments in reverse order:
arch fedora ubuntu

练习 2:编写一个脚本,显示传递给它的参数数量。

提示:使用特殊变量 $#

预期输出:

abhishek@itsfoss:~/bash_scripts$ ./arguments.sh one and two and three
Total number of arguments: 5

练习 3:编写一个脚本,将文件名作为参数并显示其行号。

提示:使用 wc 命令来计算行号。

你可以在社区中讨论你的解决方案。

很好! 现在你可以(传递)参数了 ? 在下一章中,你将学习在 Bash 中执行基本数学运算。

(题图:MJ/5a75aa2f-1cb1-4009-a4e6-683cf61bc892)


via: https://itsfoss.com/bash-pass-arguments/

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

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

在本章的 Bash 基础知识系列中,学习在 Bash 脚本中使用变量。

在 Bash 基础知识系列的第一部分中,我简要提到了变量。现在是时候在本章中详细了解它们了。

如果你曾经进行过任何类型的编码,你一定熟悉术语“变量”。

如果没有,请将变量视为保存信息的盒子,并且该信息可以随着时间的推移而改变。

让我们看看如何使用它们。

在 Bash shell 中使用变量

打开终端并使用一个随机的数字 4 初始化变量:

var=4

现在你有一个名为 var 的变量,它的值为 4。想验证一下吗? 通过在变量名前添加 $ 来访问变量的值。这称为参数扩展。

[abhishek@itsfoss]:~$ echo The value of var is $var
The value of var is 4
? 变量初始化时 = 前后不能有空格。

如果需要,你可以将该值更改为其他值:

Using variables in shell

在 Bash shell 中,变量可以是数字、字符或字符串(包括空格在内的字符)。

Different variable types in Bash shell

? 与 Linux 中的其他事物一样,变量名称也区分大小写。它们可以由字母、数字和下划线 “_” 组成。

在 Bash 脚本中使用变量

你是否注意到我没有运行 shell 脚本来显示变量示例? 你可以直接在 shell 中做很多事情.当你关闭终端时,你创建的那些变量将不再存在。

但是,你的发行版通常会添加全局变量,以便可以在所有脚本和 shell 中访问它们。

让我们再写一些脚本.你应该之前创建了脚本目录,但无论哪种情况,此命令都会处理该目录:

mkdir -p bash_scripts && cd bash_scripts

基本上,如果 bash_scripts 目录尚不存在,它将创建它,然后切换到该目录。

这里让我们使用以下文本创建一个名为 knock.sh 的新脚本。

#!/bin/bash

echo knock, knock
echo "Who's there?"
echo "It's me, $USER"

更改文件权限并运行脚本。你在上一章中已经学到了。

这是它为我生成的内容:

Using global variable in Bahs script

你是否注意到它如何自动将我的名字添加到其中? 这就是包含用户名的全局变量 $USER 的魔力。

你可能还注意到,我有时将 "echo 一起使用,但其他时候则不使用。这是故意的。bash 中的引号 有特殊含义。它们可用于处理空格和其他特殊字符。让我展示一个例子。

处理变量中的空格

假设你必须使用一个名为 greetings 的变量,其值为 hello and welcome

如果你尝试像这样初始化变量:

greetings=Hello and Welcome

你会得到这样的错误:

Command 'and' not found, but can be installed with:
sudo apt install and

这就是为什么你需要使用单引号或双引号:

greetings="Hello and Welcome"

现在你可以根据需要使用该变量。

Using spaces in variable names in bash

将命令输出分配给变量

是的!你可以将命令的输出存储在变量中并在脚本中使用它们。这称为命令替换。

var=$(command)

这是一个例子:

[abhishek@itsfoss]:~$ today=$(date +%D)
[abhishek@itsfoss]:~$ echo "Today's date is $today"
Today's date is 06/19/23
[abhishek@itsfoss]:~$

Command substitution in bash

旧语法使用反引号而不是 $() 进行命令替换。虽然它可能仍然有效,但你应该使用新的推荐符号。

? 变量会更改值,除非你声明一个“常量”变量,如下所示:readonly pi=3.14。在这种情况下,变量 pi 的值无法更改,因为它被声明为 readlonly

?️ 练习时间

是时候练习你所学到的东西了。这里有一些练习来测试你的学习情况。

练习 1:编写一个 bash 脚本,以以下格式打印你的用户名、当前工作目录、主目录和默认 shell。

Hello, there
My name is XYZ
My current location is XYZ
My home directory is XYZ
My default shell is XYZ

提示:使用全局变量 $USER$PWD$HOME$SHELL

练习 2: 编写一个 bash 脚本,声明一个名为 price 的变量.使用它来获取以下格式的输出:

Today's price is $X
Tomorrow's price is $Y

其中 X 是变量 price 的初始值,并且明天价格翻倍。

提示:使用 \ 转义特殊字符 $

练习的答案可以在社区的这个专用帖子中讨论。

在 Bash 基础知识系列的下一章中,你将了解如何通过传递参数和接受用户输入来使 bash 脚本具有交互性。

(题图:MJ/37c5c26e-3289-4ebd-b8ae-88eb8a3b2eb1)


via: https://itsfoss.com/bash-use-variables/

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

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

了解如何使用用于切换目录的一个基本但必不可少的 Linux 命令。

Linux 中的 cd 命令用于更改目录。cd 实际上是“ 更改目录 change directories ”的缩写。

这是你必须了解的 基本 Linux 命令之一。

使用 cd 命令非常简单:

cd path_to_directory

不可能比这更简单了,对吧。

然而,你应该理解它的路径部分,以便轻松地浏览 文件系统 而不会感到困惑。

这是绝对路径和相对路径的快速回顾:

Absolute vs relative path in Linux

如果你需要更多细节,我建议你阅读这篇文章:

Linux 上的绝对路径和相对路径有什么不同

让我们看一些使用 cd 命令的示例。

使用绝对路径更改目录

从视觉上看会更容易理解。看下图。

Absolute path travel to the python directory

我当前的位置是我的主目录(/home/abhishek),我必须进入 scripts 目录中的 python 目录。

假设我想使用绝对路径。python 目录的绝对路径是 /home/abhishek/scripts/python

cd /home/abhishek/scripts/python

cd command with absolute path

使用相对路径更改目录

让我们举同样的例子,但这次我将采用相对路径。

Relative path example

我的主目录到 python 目录的相对路径是 scripts/python。让我们用这个:

cd scripts/python

cd command with relative path

进入上级目录

到目前为止,你一直在进入下级。如果你必须进入上级目录怎么办?

假设你位于 /home/abhishek/scripts/python 中,并且必须将目录添加到 scripts

使用绝对路径始终是一种选择,但它相当冗长。相反,你可以使用特殊的目录符号 ..。双点 (..)表示父目录或上一级目录。单点(.)表示当前目录。

cd ..

这是一个例子:

cd up a directory

你可以使用 .. 在 Linux 文件系统层次结构中向上移动路径。

假设我在上图中的 python 目录中,想要进入 code 目录。这是我能做的:

cd ../../code

Go up the directory using cd command

进入主目录

如果你在所有这些目录切换中感到迷失并想回到主目录,有很多简单的快捷方式。

事实上,最简单的就是使用不带任何选项的 cd 命令。

cd

这将使你从文件系统上的任何位置返回主目录。

或者,你可以使用 ~ 符号,表示主目录。

cd ~

Use cd to go back home

进入根目录

尽管你不会像前一个那样经常使用它,但了解一下仍然有好处。

如果你想返回文件系统开始的根目录,请使用以下命令:

cd /

这里不涉及“魔法”。当放在路径开头使用时,/ 表示根。不要将它与路径分隔符混淆。

Paths in Linux

切换回上一级目录

这是一个救命稻草,或者我应该说是“省时稻草”。当你深入目录结构,然后转到另一个目录,然后你觉得需要返回到以前的位置时,此快捷方式会有所帮助。

cd -

还不清楚吗? 让我举个例子。

我位于 /etc/apt/sources.list.d。从这里,进入 /home/abhishek/scripts/python 来处理我的代码。然后我意识到我必须再次检查 /etc/apt/sources.list.d 目录中的某些内容。

通常的方法是这样做,这让我再次输入所有路径:

Go back to previous directory

但聪明的方法是使用这个:

Use cd - to go back to previous directory

看吧,无需再次输入冗长的路径。如期工作!

?️ 练习时间

如果你想练习 cd 命令,这里有一些练习供你使用。

  • 打开终端并进入 /var/log 目录。检查目录内容。你看到了什么?
  • 现在,进入 /var 目录。这是一个上级目录。
  • 从这里返回你的主目录。

这些内容足以让你熟悉 cd 命令。以下是你应该了解的其他一些重要命令。

每个 Ubuntu 用户都应该知道的 31 条 Linux 命令

如果你有疑问或建议,请告诉我。

(题图:MJ/6fbaa345-651a-4cb9-a752-130eda922790)


via: https://itsfoss.com/cd-command/

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

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

文档查看器是每个 Linux 发行版的必备软件,可以用来阅读 PDF 等格式的文件。

Ubuntu 等发行版上的文档查看器一般是 GNOME 中的 Evince(LCTT 译注:读作 /ɪˈvɪns/)。Evince 支持多种文件格式,非常方便。

但是除了 Evince,还有很多其他的文档阅读应用。比如 Linux 上优秀的电子书阅读应用 Foliate(LCTT 译注:读作 /ˈfəʊlɪɪt/)。

最近我又发现了另一个文档查看器:Zathura。

用 Zathura 获得摆脱鼠标的阅读体验

Zathura 是一个高度可定制的文档查看器,基于 girara 用户界面 和几个文档库。girara 实现了一个简单、最小的用户界面。

Zathura 的加载速度极快。它极其简约,没有侧边栏、菜单栏等元素。(LCTT 译注:其实 Zathura 的界面没有那么单一,按 Tab 键可以显示索引页;Zathura 有一个 guioptions 选项来设置是否显示命令行、状态栏、水平滚动条、垂直滚动条等 GUI 元素。)

Zathura 文档查看器界面

: 键可以打开 Zathura 的命令行提示符,按 Esc 键可以退出命令行。

如果要新建书签,可以输入 :bmark 后面跟想要对这个书签设置的索引号。

Zathura 中的书签

F 键可以高亮所有链接,每条链接附带一个序号,并且界面底部会显示命令行提示符。在命令行中输入链接对应的序号,按下回车可以用系统默认的浏览器打开该链接。

高亮及打开文档中的链接

Zathura 还支持自动重新载入。如果文件被其他应用修改(LCTT 译注:比如在修改 LaTeX 源文件并重新编译得到新的 PDF 之后), Zathura 会自动重载修改后的文件。

你还可以安装 插件 来扩展 Zathura 的功能,比如阅读 漫画 comics 或 PostScript 文件。

但 Zathura 有一个问题,它的界面上没有任何文档或帮助选项,初次使用会有点困难。

你可以从其 Zathura 的 手册页 获取默认键盘快捷键信息。以下是其中的一部分:

  • R:旋转
  • D:在单页和双页查看模式之间切换
  • F:高亮当前屏幕内的链接
  • H J K L:使用 Vim 类型键移动(LCTT 译注:HJKL 分别为左、下、上、右)
  • 键或 PgUp/PgDown 或鼠标/触摸板:上下移动
  • /:搜索文本,按 nN 移动到下一个或上一个搜索(类似于 less 命令)
  • Q:关闭

Zathura 的项目网站提供了 如何配置该软件的文档,不过我觉得写得不太清晰。(LCTT 译注:安装 Zathura 之后,可以使用 man zathurarc 查看本地的 Zathura 配置手册。)

在 Linux 上安装 Zathura

大多数 Linux 发行版的软件仓库都包含了 Zathura,比如 Ubuntu、Fedora、Arch 和 Debian(查找自 pkgs.org 网站)。你可以使用你的发行版上的包管理器或软件中心来安装它。

在 Debian 和 Ubuntu 系发行版上可以使用下面的命令安装 Zathura:

sudo apt install zathura

在 Fedora 上可以使用:

sudo dnf install zathura

在 Arch Linux 上使用 pacman 安装 Zathura:

sudo pacman -Sy zathura

如果你想查看 Zathura 的源代码,可以访问它在 GitLab 上的软件仓库:

Zathura 源代码

总结

坦诚地说,我并不喜欢不使用鼠标的工具,所以我更喜欢 Nano 而不是 Vim,因为我记不住 Vim 上数不清的快捷键。(LCTT 译注:其实 Zathura 对鼠标是有一定支持的,单击鼠标左键可以打开链接,按住鼠标左键可以选中并复制文本,按住鼠标中键可以拖动视图,Ctrl + 滚动滑轮可以缩放视图。)

我知道有很多人坚信键盘比鼠标更高效。但我并不愿意专门学习如何配置文档查看器,主要是因为我在桌面上很少阅读大量文档,当我偶尔需要查看 PDF 时,默认的应用已经够用了。

当然,我不是说 Zathura 没有用处。如果你需要处理大量 PDF 或 LaTeX 等的文档,而且偏爱于键盘操作,Zathura 可能会成为你下一个最喜爱的工具。

(题图:MJ/80da04de-1312-43c1-86d7-3be340b12bd7)


via: https://itsfoss.com/zathura-document-viewer/

作者:Abhishek Prakash 选题:lujun9972 译者:tanloong 校对:wxy

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

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

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

这个系列适合谁?

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

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

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

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

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

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

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

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

mkdir bash_scripts

现在 切换到这个新创建的目录

cd bash_scripts

让我们在这里 创建一个新文件

touch hello_world.sh

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

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

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

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

Creating first shell script

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

这样做:

bash hello_world.sh

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

Run first shell script

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

以下是上述所有命令的重放,供你参考。

另一种运行 Shell 脚本的方法

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

./hello_world.sh

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

bash: ./hello_world.sh: Permission denied

给脚本添加执行权限:

chmod u+x hello-world.sh

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

./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 脚本时:

./hello_world.sh

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

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

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

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

#!/bin/bash

echo Hello World

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

Run bash shell script

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

?️ 练习时间

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

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

答案可以在社区论坛的 这个专门的帖子 中讨论。

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

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

请继续关注下面的内容。

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


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

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

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