本文共 1757 字,大约阅读时间需要 5 分钟。
Shell 变量是脚本编写中不可或缺的重要工具,熟练掌握变量的使用方法能够显著提升脚本的灵活性和实用性。本文将详细介绍 Shell 变量的相关知识,包括自定义变量、位置变量、内嵌变量、环境变量以及数组变量等。
在 Shell 中,变量的命名和赋值操作非常灵活。与其他编程语言不同,Shell 不需要事先声明变量,变量在使用时就会被定义。因此,在赋值时需要注意以下几点:
{}
可以明确变量的作用范围,避免命名冲突。正确的赋值格式应为:
$NEWENV=123
如果格式不正确,Shell 将无法识别变量。
此外,变量范围可以通过以下方式限定:
$BRACE=123$echo $BRACEEEE$echo ${BRACE}EEE123EEE
通过这种方式,可以确保变量值不会因上下文变化而受到影响。
位置变量用于访问脚本执行时的命令参数,具体包括以下几个特殊变量:
$0
:表示脚本的名称。$1
到 $9
:分别表示脚本的第 1 到第 9 个参数。${10}
:表示第 10 个参数及之后的所有参数(需要使用花括号)。$1
到 $n
用于接收外部传递的参数,而 $0
仍然表示脚本名称。示例:
$cat ./shell.sh#!/bin/bashecho "$10"echo "${10}"./*.sh 11 22 33 44 55 66 77 88 99 0011000
当脚本接收多个参数时,使用位置变量能够实现灵活的参数处理。
内嵌变量用于获取当前进程的信息,常见的内嵌变量包括:
#
:表示当前进程的参数个数,通常用于循环控制。@
:表示命令行传递的所有参数。如果放在双引号内,会展开为单个参数列表。*
:表示命令行传递的所有参数,和 $@
的效果类似,但没有展开功能。示例:
while [ $# != 0 ] do case $1 in ... esac shiftdone
此外,$?
用于获取前一个命令的退出状态,$$
表示当前进程的进程 ID。
环境变量是一组预定义的变量,用于配置系统的运行环境。常见的环境变量包括:
HOME
:表示用户的家目录。PATH
:表示可执行文件的路径。IFS
:表示字段分隔符,默认为空格或 tab。LINENO
:表示脚本中刚执行的行号。PPID
:表示父进程的进程 ID。环境变量的值通常通过 export
命令传递给子进程。例如:
$echo $LANG en_AU.UTF-8$echo "$LINENO" 8$echo "$PATH" /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/linux/toolchain/gcc-4.6.4/bin:.$echo "$PPID" 2647$ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDlinux 2647 0.0 2.2 110152 11540 ? Rl 07:51 0:01 gnome-terminal$echo "$PWD" /home/linux
Shell 支持数组变量,其定义方式为:
$arr=(0 1 2 var)
通过 ${arr[n]}
可以访问数组中指定位置的元素,$arr[@]
则表示数组的所有元素。
数组元素可以单独赋值:
$arr[3]=qq
并通过以下命令查看数组信息:
$echo "${arr[@]}" 0 1 2 qq$echo "${arr[*]}" 0 1 2 qq
数组的长度可以通过 ${#arr[@]}
或 ${#arr[*]}
查询。
通过以上知识,读者可以更高效地编写 Shell 脚本,充分发挥 Shell 的强大功能。
转载地址:http://sccz.baihongyu.com/