shell脚本中的变量
1.变量的定义
1)定义本身
变量就是内存一片区域的地址
2)变量存在的意义
命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标可以解决此问题
2.shell脚本中变量的定义方法
环境级别
1)环境级别
b=1
echo $b
vim test.sh
sh test.sh
. test.sh
在环境关闭后变量失效
用户级别(只针对当前用户生效)
vim ~/.bash_profile export a=1
source .bash_profile 使配置文件生效
切换用户后,再次运行test.sh脚本显示结果为空,这是因为编辑 ~/.bash_profile文件声明的变量是用户级别的变量,当切换到另一用户时变量失效
系统级别
1.在/etc/profile配置文件中进行系统级别的传参
vim /etc/profile
export b=1
source /etc/profile 使文件生效
2.自定义子配置文件
vim /etc/profile.d/test.sh
export b=1
变量名称
4)变量名称
“字符” “_” “数字”
不能用数字开头u
建议:
变量名称短全用大写字符
变量名称长用_区分子类
WESTOS
Westos_Linux
westoS_Linux
env --查看所有系统变量
unset --删除变量
3.变量的转译
3.1转译
\ 转译单个字符
" " 弱引用,批量转译个数字符 不能转译"" “`” “$” “!”
’ ’ 强引用
\:转译单个字符
3.2 声明
a=1
echo $ab
echo ${a}b
3.3变量的数组
echo $a:默认显示数组a的第一个元素
echo ${a[0]} :显示数组中第一个元素,以此类推
echo ${a[-1]}: 显示数组中最后一个元素
echo ${a[*]} 和echo ${a[@]} :显示数组中所有元素
echo ${#a[@]} :显示数组中元素的个数
echo ${a[@]:起始元素id:元素个数]} :显示数组中以起始元素为首的指定个数的元素(注意:这里起始元素id不能为负值
unset a[n] 删除数组中的第n个元素
unset a 删除a这个数组
4.Linux中命令的别名设定
alias xie=‘vim’ ##临时设定
vim ~/.bashrcnn ## 用户级shell配置文件
alias xie=‘vim’ ##只针对与用户生效
vim /etc/bashrc ##针对系统所以用户生效
alias xie=‘vim’
unalias xie ##删除当前环境中的alias
5.用户环境变量的更改
设定方式:
~/.bash_profile
export PATH=
P
A
T
H
:
/
m
n
t
/
e
t
c
/
b
a
s
h
p
r
o
f
i
l
e
e
x
p
o
r
t
P
A
T
H
=
PATH:/mnt /etc/bash_profile export PATH=
PATH:/mnt/etc/bashprofileexportPATH=PATH:/mnt
1)直接利用命令执行结果
$()| ##优先执行
2)脚本中的传参
非交互模式:
$0 is /mnt/test.sh <!脚本本身>
$1 is westos <!脚本后所输入的第一串字符>
$2 is linux
$3 is redhat
$* is westos linux redhat <!脚本后所输入的所有字符"westos linux redhat">
$@ is westos linux redhat <!脚本后所输入的所有字符’westos’ ‘linux’ ‘redhat’>
$# is 3 <!脚本后所输入的字符串个数>
交互模式传参:
read WESTOS ##对westos赋值
read -p “please input word:” ##输出提示语
-s ##隐藏输入内容
6.脚本函数
定义:
程序的别名
设定方式:
WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作