shell变量
来源:互联网 发布:oracle数据库漏洞 编辑:程序博客网 时间:2024/05/21 06:23
变量用于保存有用信息,shell变量分为3种:
- 本地变量
仅在当前shell的生命周期内有效 - 环境变量
在用户登录的生命周期内有效 - 参数变量
向shell脚本传递参数,只读。
变量的基本用法
变量
变量替换和赋值
变量是某个值的名称,引用变量就是变量替换,$是变量替换符号。
变量赋值有2种格式:
var=value${var=value}
说明:
- 等号2边有空格不影响赋值操作
- 如果vlaue中含有空格,必须用引号引起来
- 变量只能包含大小写字母,数字,下划线,数字不可开头
变量替换格式:
$var ${var}
利用unset可以清空变量的值:
unset var
变量赋值的模式:
color=blank #输出blank ${color:=blue} #输出blank ${color:-blue} unset color #输出blue ${color:=blue} #输出blue ${color} unset color #输出blue ${color:-blue} #输出空 ${color}
无类型的shell变量
shell变量不支持浮点数,只支持整数值与字符串。默认情况下是字符串,
declare -i b
declare与typeset,用于定义与限制变量的属性。declare -r 把变量设置为只读。
b=xx09declare -i becho "b=$b" #输出xx09,declare不改变变量的值。let "b=b+1"echo "b=$b" #输出1.字符串变量的整数值为0
环境变量
导入环境变量
export PATH=xxx
位置变量
位置变量是一种特殊shell变量,用于从命令行向脚本传递参数,第一个参数为$1,$2依次类推,大于9的要用大括号${10}。$*和$@都表示全部参数。$#表示参数个数
$* 和 $@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(” “)包含时,都以”$1” “$2” … “$n” 的形式输出所有参数。
但是当它们被双引号(” “)包含时,”$*” 会将所有的参数作为一个整体,以”$1$2 … $n”的形式输出所有参数;”$@” 会将各个参数分开,以”$1” “$2” … “$n” 的形式输出所有参数。
引用
引用指把字符串引用起来,以免被解释为其他意义,shell定义了4种引用
- 双引号
双引号引用除美圆符号($)、反引号()和反斜线(\)之外的所有字符,即$和
及\在双引号中仍被解释为特殊意义,利用双引号引用变量能防止字符串分割,而保留变量中的空格。因此双引号的引用方式称为部分引用。 - 单引号
单引号中字符除单引号本身之外都解释为字面意义,不再具备引用变量的功能,单引号的引用方式称为全引用。
- 反引号
反引号进行命令替换(将命令的标准输出作为值赋给某个变量),等价于$(),同时$()形式的命令替换是可以嵌套的。如pwd
和$(pwd)等价都为当前工作目录。
- 反斜线
反斜线符号()表示转义,将屏蔽下一个字符的特殊意义,而以字面意义解析它。
命令替换
echo `ls *`echo $( ls *)
反引号与$()都可以命令替换,但是$()是可以嵌套的。
echo `ls *`echo $( rm $(ls * ))
反引号与$()在处理双反斜线时有区别
echo \\ #输出\echo `echo \\` #输出空白行echo $( echo \\)#输出\
变量的高级用法
内部变量
字符串处理
bash处理字符串使用awk或者expr。
expr是功能十分强大的命令。可以实现算术操作、比较操作、逻辑操作。
字符串处理
有类型变量
间接变量引用
如果第一个变量的值是第二个变量的名字,那么从第一个变量引用第二变量的值,就叫间接变量引用
var1=var2var2=value#1eval tmp=\$$var1#2tmp=${!var1}
bash数学运算
expr命令
bc运算器
(( )) & [ ]
系统给定的特殊变量
- Shell变量
- Shell变量
- shell 变量
- Shell 变量
- Shell变量
- shell变量
- shell变量
- shell 变量
- Shell ”变量“
- Shell变量
- SHELL 变量
- shell变量
- shell变量 ***
- shell变量
- shell 变量
- 【shell】变量
- shell 变量
- shell变量
- Golang -- goroutine实例(乒乓球双打比赛)
- 链栈初始化、进栈、出栈、判空、遍历、求长、求顶、清栈、毁栈
- Magic Number LCA求路径点集的并
- Flask在linux系统下环境的离线搭建及简单实用教程
- 树莓派下安装Django环境
- shell变量
- Centos下安装mysql
- 代码编写技巧
- 软件工程-系统开发方法-jackson方法
- 2017计蒜之道程序设计大赛初赛第五场
- 选择排序
- [LeetCode] Perfect Squares
- VB.NET总结
- vue--mounted