@geekpi
https://linux.cn/article-15991-1.html
This commit is contained in:
Xingyu Wang 2023-07-12 11:19:04 +08:00
parent 95158a0441
commit e50a0691a2

View File

@ -3,14 +3,18 @@
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15991-1.html"
Bash 基础知识系列 #2:在 Bash 中使用变量
======
在 Bash 基础知识系列的第一部分中,我简要提到了变量.现在是时候在本章中详细了解它们了。
![][0]
> 在本章的 Bash 基础知识系列中,学习在 Bash 脚本中使用变量。
在 Bash 基础知识系列的第一部分中,我简要提到了变量。现在是时候在本章中详细了解它们了。
如果你曾经进行过任何类型的编码,你一定熟悉术语“变量”。
@ -20,13 +24,13 @@ Bash 基础知识系列 #2在 Bash 中使用变量
### 在 Bash shell 中使用变量
打开终端并使用随机数 4 初始化变量:
打开终端并使用一个随机 4 初始化变量:
```
var=4
```
现在你有一个名为 `var` 的变量,它的值为 `4`.想验证一下吗? **通过在变量名前添加 $ 来访问变量的值**.这称为参数扩展。
现在你有一个名为 `var` 的变量,它的值为 `4`。想验证一下吗? **通过在变量名前添加 `$` 来访问变量的值**这称为参数扩展。
```
[abhishek@itsfoss]:~$ echo The value of var is $var
@ -43,7 +47,7 @@ The value of var is 4
![Different variable types in Bash shell][2]
> 💡 与 Linux 中的其他事物一样,变量名称也区分大小写.它们可以由字母、数字和下划线 “\_” 组成。
> 💡 与 Linux 中的其他事物一样,变量名称也区分大小写。它们可以由字母、数字和下划线 “`_`” 组成。
### 在 Bash 脚本中使用变量
@ -70,19 +74,18 @@ echo "Who's there?"
echo "It's me, $USER"
```
更改文件权限并运行脚本.你在上一章中已经学到了。
更改文件权限并运行脚本你在上一章中已经学到了。
这是它为我生成的内容:
![Using global variable in Bahs script][3]
**你是否注意到它如何自动将我的名字添加到其中?** 这就是包含用户名的全局变量 $USER 的魔力。
**你是否注意到它如何自动将我的名字添加到其中?** 这就是包含用户名的全局变量 `$USER` 的魔力。
你可能还注意到,我有时将 " 与 echo 一起使用,但其他时候则不使用。这是故意的。[bash 中的引号][4] 有特殊含义。它们可用于处理空格和其他特殊字符。让我展示一个 例子。
你可能还注意到,我有时将 `"``echo` 一起使用,但其他时候则不使用。这是故意的。[bash 中的引号][4] 有特殊含义。它们可用于处理空格和其他特殊字符。让我展示一个例子。
### 处理变量中的空格
Let's say you have to use a variable called `greetings` that has the value `hello and welcome`.
假设你必须使用一个名为 `greetings` 的变量,其值为 `hello and welcome`
如果你尝试像这样初始化变量:
@ -110,7 +113,7 @@ greetings="Hello and Welcome"
### 将命令输出分配给变量
是的! 你可以将命令的输出存储在变量中并在脚本中使用它们.这称为命令替换。
是的!你可以将命令的输出存储在变量中并在脚本中使用它们这称为命令替换。
```
var=$(command)
@ -127,13 +130,13 @@ Today's date is 06/19/23
![Command substitution in bash][6]
旧语法使用反引号而不是 $() 进行命令替换.虽然它可能仍然有效,但你应该使用新的推荐符号。
旧语法使用反引号而不是 `$()` 进行命令替换。虽然它可能仍然有效,但你应该使用新的推荐符号。
> 💡 变量会更改值,除非你声明一个“常量”变量,如下所示:`readonly pi=3.14`.在这种情况下,变量 `pi` 的值无法更改,因为它被声明为 `readlonly`
> 💡 变量会更改值,除非你声明一个“常量”变量,如下所示:`readonly pi=3.14`在这种情况下,变量 `pi` 的值无法更改,因为它被声明为 `readlonly`
### 🏋️ 练习时间
是时候练习你所学到的东西了.这里有一些练习来测试你的学习情况。
是时候练习你所学到的东西了这里有一些练习来测试你的学习情况。
**练习 1**:编写一个 bash 脚本,以以下格式打印你的用户名、当前工作目录、主目录和默认 shell。
@ -145,7 +148,7 @@ My home directory is XYZ
My default shell is XYZ
```
**提示**:使用全局变量 $USER、$PWD、$HOME 和 $SHELL。
**提示**:使用全局变量 `$USER``$PWD``$HOME``$SHELL`
**练习 2** 编写一个 bash 脚本,声明一个名为 `price` 的变量.使用它来获取以下格式的输出:
@ -156,12 +159,14 @@ Tomorrow's price is $Y
其中 X 是变量 `price` 的初始值,并且明天价格翻倍。
**提示**:使用 / 转义特殊字符 $
**提示**:使用 `\` 转义特殊字符 `$`
练习的答案可以在社区的这个专用帖子中讨论。
在 Bash 基础知识系列的下一章中,你将了解如何通过传递参数和接受用户输入来使 bash 脚本具有交互性。
*题图MJ/37c5c26e-3289-4ebd-b8ae-88eb8a3b2eb1*
--------------------------------------------------------------------------------
via: https://itsfoss.com/bash-use-variables/
@ -169,7 +174,7 @@ via: https://itsfoss.com/bash-use-variables/
作者:[Abhishek Prakash][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -181,3 +186,4 @@ via: https://itsfoss.com/bash-use-variables/
[4]: https://linuxhandbook.com:443/quotes-in-bash/
[5]: https://itsfoss.com/content/images/2023/06/using-spaces-in-bash-variable.png
[6]: https://itsfoss.com/content/images/2023/06/command-substitue-bash-variable.png
[0]: https://img.linux.net.cn/data/attachment/album/202307/12/111750bzruv9jiako6j694.jpg