我们已经写了一系列的温暖欢迎到时候在Linux Shell脚本文章,甚至现在是多少相关。 这里是到shell脚本的文章集合的链接。
在这里,在这篇文章中,我们将看到变量 ,它的执行及其在shell脚本执行。
Linux变量Shell脚本
保存输出
命令的输出可以重定向到标准输出或文件,也可以存储在变量中。 如果命令的输出足够大,使得它不适合屏幕,我们只能选择将输出保存到变量中的文件。 将输出保存到变量的一个优点是更快的检查速度。 变量保存到内存中,因此与从文件检索相比,变量趋向于快速。
脚本语言中的变量
变量是在Shell脚本中使用的重要组成部分,并使用宣布bash命令“ 声明 ”。 要声明一个变量说' 级别 ',我们需要执行下面的命令。
$ declare LEVEL
注 :我们需要使用“ 类型转换 ”,一个内置的语句Korn shell的兼容性。 'declare'是更高级的,包含所有的功能,因此建议在使用BASH时。
规则
- 变量名必须对齐,在脚本中使用变量。
- 强烈建议在整个程序中使用相同的变量名。
- 变量名称可以是大写也可以小写,但是通过约定shell命令是小写的,因此我们应该使用大写的变量名称,以便消除任何混淆。 例如TOTAL_BILLED_AMOUNT,SELL_REPORT,ORDER_RECEIPT等。
实施
变量可以分配使用等号(=)的一个值。 要为变量分配一个空字符串,我们不能在等号后提供任何值。
$ LEVEL =
检查存储在变量“LEVEL”中的值。
$ printf "%i" $LEVEL
。printf的 ,命令的大部分'C'的程序员都知道,打印数据%I -代表整数。 我们可以替换为%c它的字符或%C字符串,有需要时。
$ LEVEL:注意“$”,这可以作为价值substituter的变量“LEVEL”。
示例输出
$ printf "%i" $LEVEL 0
为变量赋值。
$ LEVEL=0
检查变量中存储的数据。
$ printf "%i" $LEVEL 0
注意 :这是有趣的是,在这两种情况下,当我们没有分配值给变量,当我们赋值为“0”的变量“LEVEL”输出0。 虽然输出在两种情况下是相同的,但shell脚本处理变量声明不同。
为变量分配一个新值。
$ LEVEL=121
检查变量中存储的数据。
$ printf "%i" $LEVEL 121
取消设置变量
声明是bash命令并执行,只有当它创建变量。 这样创建的变量保留在内存中,直到脚本停止或变量被销毁。
$ unset LEVEL
BASH中的预定义变量
Bash有预定义了50个变量。 其中一些变量具有连接到BASH例如,一个随机变量输出随机数特殊的意义。 如果它被取消设置,然后再次定义,原始变量值将永远丢失。 因此建议不要使用任何系统定义的变量。
这里是一些有用的BASH变量的列表。
- BASH - Bash的完整路径名。
- BASH_ENV - 在shell脚本中,在脚本启动之前执行的概要文件文件的名称。
- BASH_VERSION - Bash的版本(例如,2.04.0(1) - 释放)。
- COLUMNS - 显示屏上每行的字符数(例如80)。
- HOSTNAME - 计算机的名称。 在某些版本的Linux下,这可以是机器名称。 在其他人,它可以是一个完全限定的域名。
- HOSTTYPE - 计算机类型。
- HOME - 您的主目录的名称。
- OSTYPE - 操作系统的名称。
- PATH - 用于查找要执行的命令的搜索路径的冒号分隔列表。
- PPID - shell的父进程的进程ID。
- PROMPT_COMMAND - 在设置PS1主提示字符串之前执行的命令。
- PWD - 当前工作目录(由cd命令设置)。
- RANDOM - 每次引用时返回0和32767之间的随机数。
- SHELL - 使用的首选外壳; 为你启动一个shell的程序。
- TERM - 终端仿真类型(例如,控制台)。
词分裂规则。
$ LEVEL=0 $ printf "%i" $LEVEL 0 AND $ LEVEL=”0” $ printf "%i" $LEVEL 0
在这两种情况下,输出保持相同。 那么在使用报价时,结果有什么区别?
让我们用不同的变量数据检查。
$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5 bash: 1: command not found bash: 2: command not found bash: 3: command not found bash: 4: command not found bash: 5: command not found
$ printf "%i" $LEVEL 0
更不用说,输出不正确。 BASH作为终止,因此变量的值被设定为'0'后'0'取的空间。 现在我们尝试使用变量的引用如下。
$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5” $ printf "%s" $LEVEL 0;1;2;3;4;5
仍然的结果是不正确的。 BASH接受变量值并删除它们之间的所有空格。 因此printf的没有解释0,1,2,3,4,5为不同的值。 那么解决方案是什么?
printf "%s" "$LEVEL" 0 ; 1 ; 2 ; 3 ; 4 ; 5
是啊! 将变量替换放在引号下是解决方案。 引号对shell中的字符进行分组,并以有意义的方式解释特殊字符。
引号可以背对背使用,最好用引号括起变量替换。 此外,它可以用于从报价中分离整体文本。 这里是一个例子。
$ LEVEL=5 $ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." $ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”
用空格分隔带引号的文本块将导致与上面讨论的相同的问题。 bash会将空格视为终止。 另一种可变替代的方法是。
$ LEVEL=5 $ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." $ printf “%s” "$FLAG_MESSAGE" “I HAVE CLEARED LEVEL 5. I Deserve appreciation.”
单引号限制BASH打印特殊字符。
$ printf “%s” '$FLAG_MESSAGE' “$FLAG_MESSAGE”
反斜杠(/)
反斜杠的作用就像一个字符的单引号。 你有没有想过你将如何打印(“)?
$ printf "%c" "\""
当%Q与printf的分组,每一个字后提供反斜杠,以确保字间距。
$ LEVEL=5 $ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." $ printf “%q” "$FLAG_MESSAGE" “I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”
目前为止就这样了。 我们总是努力为读者提供对他们有用的文章。 上面涵盖的文章是巨大的,因此其余的主题与例子将在下一篇文章中将产生,其中包括“变量的属性”,“变量导出”等。
直到那时敬请关注,并连接到youcl.com。 不要忘记在下面的评论部分向我们提供您的宝贵反馈。