#shell脚本中变量定义的方法
环境级别
命令行中直接声明export a=1,则在环境关闭后变量失效,即重新打开shell终端则失效。
用户级别
vim ~/.bash_profile编辑当前用户家目录配置文件
export a=1
source ~/.bash_profile
则只对当前用户生效
系统级别
vim /etc/profile.d/westos.sh
export a=1
source /etc/profile.d/westos.sh
此时对系统中所有用户生效
#变量名称
只能包含数字、字母、下划线_
且不能以数字开头
变量名称短一般全用大写字符,如WESTOS=1
变量名称长一般用_分开,如Westos_Linux=1,或westoS_Linux=1
#变量的转译
\只能转译单个字符,如echo \$2
''单引号为强引用,可以批量转译全部字符,如echo '$$'输出两个$(在linux中$$表示当前程序id,不转译会输出id数字)
""双引号为弱引用,也可以批量转译字符,但不能转译\ $ ` !等字符。
#变量的声明
如声明a=1,echo $ab不会输出1b,因为把ab整体当成了变量,需要echo ${a}b,输出1b
#变量的数组
a=(1 2 3 4 5)echo $a输出1,默认显示数组第一个值
echo ${a[0]}数组中第一个元素,a[1]就为第二个以此类推,a[*]或a[@]则为数组中所有元素,区别在于*为一串字符"1 2 3 4 5",@为五串字符"1" "2" "3" "4" "5"。
echo ${a[-1]}数组中倒数第一个元素,a[1]就为倒数第二个以此类推,
echo ${a[@]:1:3}输出数组中下标为1和往后一共三个数,即输出2 3 4
echo ${#a[@]} 输出数组中元素的个数
a[5]=6往数组中添加元素,添加第六个数为6,unset a[5]=6删除元素,unset a删除数组
#linux中命令的别名设置
alias xie = 'vim' 临时设定
vim ~/.bashrc alias xie = 'vim' source ~/.bashrc 只针对当前用户生效
vim /etc/bashrc alias xie = 'vim' source /etc/bashrc 针对系统所有用户生效
unalias xie 删除别名
#用户环境变量更改
echo $PATH查看
vim ~/.bash_profile编辑当前用户配置文件,只针对当前用户生效
如PATH=$PATH:$HOME/bin:/mnt , source ~/.bash_profile
或者编辑/etc/bash.profile.d/PATH.sh为系统配置文件,针对所有用户生效
export PATH=$PATH:/mnt , source/etc/bash.profile.d/PATH.sh
此时在mnt目录中中创建的脚本文件在进入目录后并加上x权限后可以直接test.sh运行,不用/mnt/test.sh或./test.sh运行。
#脚本的传参
非交互式模式
$0为脚本身,即test.sh,
交互式
-s隐藏输入内容
练习:
编写ctrl_user.sh脚本,ctrl_user.sh del,则输入用户名,用户存在则删除,不存在则提示。
如果跟add添加,输入用户名,用户存在则提示,不存在则添加,输入密码,提示创建成功
#脚本函数
练习:
编写一个脚本,运行后让输入单词,如果输入westos则输出linux,继续弹出让输入单词,以此类推,输入linux则输出westos,输入其他的则输出error,除非输入exit则输出bye并退出脚本。
#将命令的执行结果赋值给变量
练习:
脚本文件,运行后显示当前主机名,ip地址,当前用户