Shell脚本是一种解释性语言,用于编写自动化任务和系统管理脚本。在Shell脚本中,变量用于存储和操作数据。变量在脚本中可以被赋值、读取和修改。
在shell脚本中,变量用于存储数据,可以是数字、字符串或其他类型的值。可以使用变量来存储中间结果、用户输入或从命令输出中获取的值,以便在脚本的不同部分进行引用和使用。
命令赋值法
-
直接赋值:使用
=
符号将值赋给变量,如name="John"
-
命令替换:使用反引号 ` 或者
$()
将命令的输出结果赋给变量,如dateStr=$(date +%Y-%m-%d)
-
环境变量赋值:使用
export
命令将变量导出为环境变量,供其他脚本或程序使用。
注意:定义变量时,变量名只能以字母或者"_"作为开头
变量名=变量值
num1="1"
num2="2"
echo "num1=$num1,num2=$num2"
变量删除
可以使用 unset 命令来删除变量。 unset 命令用于移除一个或多个变量的定义。
name="张三"
echo $name
张三
unset name
echo $name
通过标准输入来定义变量
格式:read 获取标准输入的内容给 变量
read -p "请输入一个数值来赋予变量:" i
echo $i
环境变量
变量的范围划分
- 全局变量(Global Variables):全局变量在整个脚本中都是可见和可用的。它们可以在脚本的任何位置定义,并且可以在整个脚本的任何地方使用。全局变量对整个脚本的所有函数和命令都是可见的。
- 局部变量(Local Variables):局部变量只在定义它们的函数或命令中可见和可用。它们的作用范围被限制在特定的函数或命令中,不能在其他函数或命令中使用。
- 本地变量:生效范围为当前shell进程中某代码片断,通常指函数。 只能在定义它们的函数/脚本内 部中使用。
查看所有的环境变量
env
其中用处最为广泛的环境变量为
$PATH 表示可执行文件的默认路径
$USER 表示用户名称
$HOME 表示用户的宿主目录
$LANG 表示语言和字符集
$PWD 表示当前所在工作目录
环境变量的特性
- 可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量。
- 一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程。
- 一般只在系统配置文件中使用,在脚本中较少使用。
环境变量的配置文件
全局配置文件:
/etc/profile,修改此文件会作用于所有用户。
用户独立的配置文件:
env ~/.bash_profile,修改这个文件只作用于当前用户。
位置变量
位置变量是$后以数字为结尾的的变量代表着每一个变量和标准输入参数的位置。(数字是以1为开头。 1-9是正常跟在$后面即可。当数字大于或等于10,要用{ }进行使用,区别shell误识别。)
[root@localhost test]#vim test.sh
#!/bin/bash
echo ”第一个变量值为: $1“
echo ”第二个变量值为: $2“
echo ”第三个变量值为: $3“
echo ”第四个变量值为: $4“
echo ”第五个变量值为: $5“
自定义变量
$0 :获取当前脚本的名称(如果是软链接,显示软链接文件名)。
$@ :将所有参数作为独立的字符串返回。
$* :将所有参数作为单个字符串返回。
$# :获取当前命令行参数的个数。
$_ :获取上一个命令或脚本的最后一个参数。
$$ :获取当前Shell进程的PID。
$? :获取上一次命令的退出状态,返回0表示成功,非0表示错误。
以上只是一些常见的变量用法,shell脚本中还有更多高级的变量操作和用法,可以根据具体需求进行学习和使用。