##
1.
变量的定义
####
定义本身
变量就是内存一片区域的地址
####
变量存在的意义
####
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
##
2.
shell
脚本中变量的定义方法
####
环境级别
export a
=
1
在环境关闭后变量失效
####
用户级别
vim
~/
.bash_profile
export a
=
1
####
系统级别
vim
/
etc
/
profile
export a
=
2
vim
/
etc
/
profile.d
/
westos.sh
export b
=
3
##
变量名称
####
变量名称可包含的字符
字母
下划线
_
数字
####
变量名称定义规则
不能用数字开头
####
建议
:
变量名称短全用大写字符
变量名称长用
_
区分子类
WESTOS
Westos_Linux
westoS_Linux
####
3.
变量的转译
#
1
)
转译
\
#
转译单个字符
"" #
弱引用
,
批量转译个数字符 不能转译
"
\
" "" "$" "
!
"
''
#
强引用
#
2
)
声明
a
=
1
echo $ab
echo ${a}b
#
3
)
变量的数组
a
=
(
1 2 3 4 5
)
a$[a[
@
]
:
起始元素
id
:
元素个数
]
echo ${a[
0
]} ##
数组中第一个元素
echo ${a[
1
]} ##
数组中最后一个元素
echo ${a[
*
]} ##
数组中所有元素
echo ${a[
@
]} ##
数组中所有元素
echo ${a[
@
]
:
0
:
3
} ##
数组中
13
个元素
echo ${#a[
@
]} ##
数组中元素的个数
unset a[n] ##
删除数组中的第
n1
个元素
unset a
##
删除
a
这个数组
####
4.
Linux
中命令的别名设定
alias xie
=
'vim'
##
临时设定
vim
~/
.bashrc
alias xie
=
'vim'
##
只针对与用户生效
vim
/
etc
/
bashrc ##
针对系统所以用户生效
alias xie
=
'vim'
unalias xie ##
删除当前环境中的
alias
####
5.
用户环境变量的更改
设定方式
:
~/
.bash_profile
export PATH
=
$PATH
:/
mnt
/
etc
/
bash_profile
export PATH
=
$PATH
:/
mnt
#
1
)
直接利用命令执行结果
$()
|
##
优先执行
TEST
=
hostname TEST
=
$(hostname)
#
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
##
隐藏输入内容
#
7.
脚本函数
定义
:
程序的别名
设定方式
:
WORD()
{
action1
action2
}
WORD
在脚本中就代表
action1 action2
这两个动作
#
练习脚本
#
sh create_user.sh
Please input username
:
westos
westos exist
<
output
>>
westos is exist
>
Please input username
:
westos not existplease input password
:
无回显密码
此用户会自动建立并且密码为提示后设定的密码
并显示
:
westos is created
并再次提示
Please input username
:
当
Please input username
:
exit
此脚本推出
####
脚本书写思路
#####
判定
exit
推出
[ "$USER"
=
"exit" o "$USER"
=
"EXIT" ]
&&
{
echo bye
}
||
{
进入判定用户是否存在
}
#####
判定用户是否存在
**
用户存在显示返回判定
exit
**
id
用户名称变量
&> /
dev
/
null
&&
{
echo
用户存在
判定
exit
}
**
用户不存在建立用户返回判定
exit
**
||
{
显示
please input password
:
建立用户
更改密码
显示用户建立成功
判定
exit
}