在Shell脚本中理解和编写“Linux变量” - 第10部分

Linux shell脚本语言一直是一个热门话题,并将永远在未来。 Shell脚本语言是神奇的,它像脚本语言一样容易做任何其他语言的程序。 然而,它需要对我们正在做什么以及预期的结果有深入的了解。

了解Shell脚本中的变量

所有我们为我们的读者写的shell脚本的文章高度赞赏包括最后一“ 的Linux变量的洞察 。” 我们将最后一篇文章延伸到一个新的水平。

变量属性

Linux环境中的每个变量都有某些选项,这些选项称为“属性”。 这些选项或属性可以根据使用命令“声明”的状况需要时打开 关闭

变量属性的一个实施例是使用一个开关说'-i“,这将打开用于相应可变整数属性。 即使非数字的值传递给开关“-i”它不会抛出一个错误信息,并输出“0”作为整数解释。 这里从下面的例子变得更加清楚。

声明一个变量Integer,bill = 121

avi@localhost:~$ declare -i bill=121

Printf可变票据的值。

avi@localhost:~$ printf "%d\n" "$bill" 
121

让变量值为一个字符串。 可变票据已经声明,无需第二次声明。 只需更改变量的值为。

avi@localhost:~$ bill=youcl

现在,再次printf可变bill的值。

avi@localhost:~$ printf "%d\n" "$bill" 
0

通知在错误消息的地方“0”。

现在,问题是,如何知道已经声明的变量的属性?
avi@localhost:~$ declare -p bill 
declare -i bill="121"

在这里,-p(代表打印)开关来抢救。

再次,我该如何关闭变量的属性?

为了要关闭一个变量是我们需要的属性都是把一个+( 加号 )就在开关。 这里从下面的例子更清楚。

关机为上述变量的整数属性。

avi@localhost:~$ declare +i bill

检查变量的值。

avi@localhost:~$ printf "%d\n" "$bill" 
bash: printf: bill: invalid number
0

现在使用开关字符串打印变量的值。

avi@localhost:~$ printf "%s\n" "$bill" 
youcl

在这里,在上面的例子中,bash将无法判断非数值为错误,但printf的解释是,这可能是一个数字,什么不能。

只读变量

您可能听说过只读存储器(ROM),但什么是只读变量? 有与ROM的任何相似性吗?

好的只读变量,如只读存储器,其值在分配后不能更改。 因此,它被称为只读。 您不能写入,编辑或修改该变量的新值。 这里是使用示例的插图。

Decalre只读(-r)变量名,它的值是“youcl.com”。

avi@localhost:~$ declare -r name="youcl.com"

Printf上面声明的变量的值。

avi@localhost:~$ printf "%s\n" "$name" 
youcl.com

尝试更改变量的值。

avi@localhost:~$ declare -r name="Avishek" 
bash: declare: name: readonly variable

如上一个只读变量的属性讨论可以用“+”号进行更改。

在Linux中导出变量

shell脚本中声明的所有shell变量都可用,直到脚本运行。 在脚本之外,脚本中的变量不存在。 在脚本外部使变量可用的过程称为导出变量。

变量可以在使用shell开关以外的出口申报-x(出口),这都承认,你要导出什么壳。 声明导出开关可以用作。

avi@localhost:~$ declare -x variable=”Constant_Value”

当变量在脚本外部导出时,脚本运行时对变量所做的所有更改都将丢失。 导出变量在shell脚本中非常重要。

我们希望有应只读和脚本的可用外,我们需要使用开关-r,并在同一时间进行切换-x的变量。

avi@localhost:~$ declare -rx variable=”Constant_Value”

环境变量

在程序和执行它们的程序之间共享的变量。 可以导出环境变量,但不能将属性分配给它。

实际上理解上述理论。 在这里,我们有两个脚本0.sh1.sh。

# 0.sh
#!/bin/bash 
declare -rx name=youcl 
bash 0.sh 
exit 0

第二个脚本是。

# 1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=youcl.com 
printf "%s\n" "$name"
exit 0

这里发生了什么,是一个变量(名称)被声明为只读和导出,并紧跟在第二个脚本被调用之后。

第二个脚本刚刚打印从在第一printf语句出口的第一个脚本变量。 在第二个printf语句这表明赋给变量' '的新值。

无需担心,变量是只读的,如何重新分配。 你不记得“当脚本运行时对变量所做的所有更改都会在变量导出到脚本外部时丢失。

参考文献

宣告命令允许下面的所有交换机及其组合一起。

  1. -a:声明数组。
  2. -f:显示功能和定义。
  3. -F:显示功能名称。
  4. -r:声明变量为只读。
  5. -x:声明变量为可导出。
  6. -I:声明变量整数。

目前为止就这样了。 在很在下一篇文章中,我们将讨论如何关闭这个话题之前,用在bash已经定义和变量使用' 的eval'命令变量。 希望你的人正在享受你的旅程深入的脚本。 直到那时敬请关注,并连接到youcl.com。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏