欢迎,来自IP地址为:18.97.9.173 的朋友
这一节,我们详解讲解 Bash 脚本中的变更使用。
如果之前接触过编程,那么对于变量的概念就不会陌生。
如果没有接触编程,那么可以把变量理解为一个盒子,用于保存信息。这信息可以随时被修改。
让我们来看看如何使用变量。
Bash 脚本使用变量
打开终端,初始化一个变量并给其赋一个随机数值 4:
# var=4
现在,我们已经有了一变量,变量名为”var”,它的值是4。想到使用变量的值,则需要在变量名前加”$”,这个步骤就是所谓的参数展开。
使用如下命令来演示变量值的获取:
# echo The value of var is $var
PS:需要注意的是,在变量初始化时,”=”号前后都不允许出现空格。
同时,变量值是可以修改的,可以在任何时候修改变量值,修改后会马上生效。
根据 Bash 规则,变量的值可以是数值、字符以及字符串(包括多个字符甚至空格字符集合)。
PS:同其它 Linux 规则一样,变量名是大小写敏感的,可以使用字符、数字以及下划线”_”。
注意:包含空格的字符串需要使用双引号””括起来,以免出错。
您可能已经注意到,示例没有使用 Bash 脚本来显示变量的值。因为我们自己初始化的变量只在本次会话中有效,如果关闭终端,则之前创建的变量就不再存在了。
但是这也不绝对,因为每个 Linux 的发行版会添加一些系统全局变量,这些变量是随时可以使用的,当然在脚本文件中也可以调用。这些系统变量采用全部大写字母形式,包括 $USER、$PWD、$HOME、$SHELL等。
进入之前创建的 bash_scripts 目录,创建一个脚本文件”knock.sh”,内容如下:
#!/usr/bin/bash echo knock, knock echo "Who is there?" echo "It's me,$USER"
修改文件权限并执行该脚本,会出现如下内容:
注意到脚本执行后,会自动把当前用户名添加到输出如果中了么?这就是全局变量的魔法,$USER 变量保存了当前用户名。
脚本中同样可以使用引号,因为引号在 bash 中是具有特殊意义的。它可以处理空格以及特定字符。
处理变量中的空格
例如需要定义一个变量”greetings”,它的值是”hello and welcome”。如果使用如下方式初始化变量:
# greetings=Hello and welcome
则会遇到报错,提示 and 命令找不到:
-bash: and: command not found
此时,就需要使用引号将全部内容括起来,表示空格同样为字符串的一部分。引号可以使用单引号,也可以使用双引号,不引用其它变量时效果一致。需要使用其它变量时,则使用双引号括起,因为单引号会将变量引用强制转换为字符串,不能正确返回变量的值。
将命令结果赋值给变量
确实如此,我们可以将命令的输出结果赋值给一个变量,并在脚本中使用它,这被使用命令替代:
var=$(command)
使用示例如下:
today=$(date +%D) echo "Today's date is $today"
一些比较老的语法中,变量替换会使用反引号方式(就是键盘~下面的那个字符),虽然它依然有效,但建议使用”$()”方式。
变量值通常是可以修改的,但是如果在初始化变量时使用”readonly”,则会将此变量定义为常量(即只读),之后再次修改该变量值时则不被允许。
下一节,我们将学习如何使用 bash 脚本同用户交互,接收用户的输入。>>Bash 基础(三):传参以及接收输入<<