Shell笔记:变量

通常说到变量,可能就是指的用户自定义的变量,但是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)
dd
#方式三:$((运算式))或$[运算式],前者更常用,并且推荐使用方法三,运算式中可以像数学中那样使用括号来调整优先级
ee=$(($aa+$bb))
echo $ee

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Centos系统之Shell编程基础知识
从Export理解Shell环境和变量生存期
linux shell数组变量、类型及规则
Centos编程Shell基本工作原理方案
Centos操作系统编程之Shell 问答录
rsync-linux备份脚本
Linux Shell编程入门 1-4
用shc加密shell脚本
centos每天自动备份mysql数据库
shell字符串处理
awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FI
sed之仅打印相邻重复的行 cat file aaa bbb bbb ccc ddd eee eee fff 只显示重复的行: bbb bbb eee eee sed -n ':a;N;/\(
压缩: tar -zcvf 压缩后文件名.tar.gz 被压缩文件 解压: tar -zxvf 被解压文件 注意:不要有多余的空格,一个空格即可。 具体的可以在linux环境下 用 tar --hel
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料
#假设文件名是:fortest.gtfdeclare -i fileLinesfileLines=`sed -n '$=' fortest.gtf`echo $fileLines#--
获得每行的最后一个逗号后边的内容.例如:KIAA1967 KIAA1967, xxxxSECIS biding proin 2-like, SECISBP2L, yyyy 1234ankyrin re
bash 正则表达式匹配,一行文本中 “包含 ABC” 并且 “不包含 XYZ”A文件: XXXX ABC XXX4444444444444444XXXX ABC XXX XYZ66666666666
shell/bash 让vi/vim显示空格,及tab字符Vim 可以用高亮显示空格和TAB。文件中有 TAB 键的时候,你是看不见的。要把它显示出来::set listTAB 键显示为 ^I, $显
输出到文件log中,并在屏幕上显示:#ls >&1 | tee log追加输出到文件log中,并在屏幕上显示:#ls >&1 | tee -a log
Suppose we have a file contains the following information, termed input_file:A 0B 1C 21.Read file on