欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Shell变量介绍和使用

程序员文章站 2022-03-26 14:45:18
通常说到变量,可能就是指的用户自定义的变量,但是Shell中变量的概念除了用户自定义变量,还包括环境变量、系统预定义变量、位置参数变量、数值变量等。 用户自定义变量注意用户自定义变量只在当前的shell终端中生效。自定义变量:变量名称可以使用字母、数字和下划线组成,但是不能以数字开头。变量类型:Ba ......

通常说到变量,可能就是指的用户自定义的变量,但是shell中变量的概念除了用户自定义变量,还包括环境变量、系统预定义变量、位置参数变量、数值变量等。

 

用户自定义变量
注意用户自定义变量只在当前的shell终端中生效。
自定义变量:变量名称可以使用字母、数字和下划线组成,但是不能以数字开头。
变量类型:bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为数值类型,见后面的“数值运算”内容。
变量赋值:变量和值之间使用等号=连接,而且等号两边不能有空格。
命令输出赋值给变量:使用“变量名=$(命令)”的格式。
引用变量:“$变量名”,如“$name”。
变量叠加:如“aa=123”,有两种方式,一种是使用双引号和$符,“aa="$aa"456”,另一种是$符和花括号,“aa=${aa}456”。
set:可以查看系统中的所有变量。
unset 变量名:删除某个变量。

 

环境变量
环境变量分为两部分,一部分是系统环境变量,另一部分就是用户自定义环境变量(建议使用全大写的命名方式)。
环境变量在当前shell环境以及其子shell环境中都有效,并且环境变量可以写入配置文件,这样就可以在所有shell环境中生效。
export 变量名[=值]:声明或设置一个环境变量。
env:查看所有环境变量(set是查看所有的变量,包括局部变量)。
unset 变量名:删除某个变量。
常用系统环境变量:

  • path:系统查找命令的路径。

 

系统预定义变量
预定义其实就是系统给你定义好了,你直接用就行了,所以系统预定义变量就是一些固定的变量,需要的时候直接使用即可。
$?:表示最后一次执行的命令的返回状态。如果这个变量的值为0,表示上一个命令是正确执行的;如果这个变量的值为非0(具体返回的数字由命令自己定义),表示上一个命令是没有正确执行的。
$$:当前进程的进程号(pid)。
$!:后台运行的最后一个进程的进程号(pid)。

 

位置参数变量
位置参数变量表示的是运行脚本时给脚本传递的参数,位置参数变量其实是系统预定义变量中的一部分,但是因为它们都是跟“位置”相关,所以单独拿了出来。
$[n]:$0代表命令本身或脚本文件本身,$1-$9代表第一到第九个参数,10及以上的参数需要使用大括号,如${10}。
$*:代表命令行中的所有参数,并且它是一个整体,即for循环时只会循环一次,一次性将所有参数输出。
$@:代表命令行中的所有参数,但它相当于一个序列,即for循环每次循环都会输出一个参数。
$#:代表命令行中参数的个数。

 

接收键盘输入
read [选项] [变量名]:接收键盘输入,并将输入值赋予指定的变量。
选项:

  • -p "提示信息":等待read输入时,输出提示信息。
  • -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间。
  • -n 字符数:read命令只接受指定的字符数,字符数够了就会自动执行命令。
  • -s:隐藏输入的数据,适用于机密信息的输入(此时不用按回车,只要字符数够了就会自动执行)。

 

数值运算
linux中的变量默认都是字符串,想要进行数值运算,需要给变量声明变量类型。
declare [+/-][选项] 变量名:声明变量。
选项:

  • -:给变量设定类型属性。
  • +:取消变量的类型属性。
  • -i:将变量声明为整数型(integer)。
  • -x:将变量声明为环境变量(export也可以将变量声明为变量,而且export更常用)。
  • -p:显示指定变量被声明的类型。

示例:

aa=11
bb=22
#方式一:声明变量cc为整数型
declare -i cc=$aa+$bb
echo $cc
#方式二:使用expr命令,注意加号两边的空格不能省略
dd=$(expr $aa + $bb)
echo $dd
#方式三:$((运算式))或$[运算式],前者更常用,并且推荐使用方法三,运算式中可以像数学中那样使用括号来调整优先级
ee=$(($aa+$bb))
echo $ee

 转自:https://www.cnblogs.com/guyuyun/p/12735039.html