一、变量的定义
变量就是内存中某片区域的地址
二、变量的意义
命令无法操作一直变化的目标;通过用一串固定的字符来表示不固定的目标,这就是变量的意义
三、shell脚本中变量的定义方法
1、变量名称的定义规则
变量名称中可包含的字符:字母、下划线、数字
变量名称不能以数字开头
变量名称短时建议全用大写字符;变量名称长时建议使用_下划线来区分子类
2、环境级别的变量定义
使用 export 命令来进行环境变量的定义
3、用户级别的变量定义
环境级变量的设定在环境关闭或改变后重新打开时因shell的资源被系统回收导致原来的变量设定不会继续生效
此时可以在用户家目录下的shell配置文件 ~/.bash_profile 中进行用户级变量定义
可以在 ~/.bash_profile 中指定在执行脚本时某个目录中的脚本可以使用相对路径方式调用脚本
4、系统级别的变量定义
用户级变量的设定在切换用户时会失效;因为切换用户之后,当前用户打开shell时读取变量的文件是自己家目录下的 .bash_profile
在系统级的配置文件 /etc/profile 中进行系统级变量定义使此变量的定义对系统内所有用户生效(一般在子配置文件目录 /etc/profile.d 中进行新增变量的定义)
四、变量的转译
1、转译
\ ##转译单个字符
" " ##批量转译(弱引用;不能转译【\】【$】【!】【`】)
' ' ##批量转译(强引用)
2、声明
使用{}对变量进行声明
3、变量的数组
设定 a=(1 2 3 4 5)
echo ${a[0]} ##显示数组中的第一个元素
echo ${a[1]} ##显示数组中的第二个元素
echo ${a[*]} ##显示数组中的全部元素
echo ${a[@]} ##显示数组中的全部元素
echo ${a[@]:0:3} ##显示数组中从0元素开始后面的3个元素
echo ${#a[@]} ##数组中元素的个数
unset a[n] ##删除数组a中的第n+1个元素
unset a ##删除数组
***数组中*和@的区别:
五、Linux中命令的别名设定
alias wang='date' ##临时设定
vim ~/.bashrc ##永久设定;只针对当前用户生效
vim /etc/bashrc ##永久设定;针对系统中所有用户生效
unalias wang ##删除当前环境中的alias
六、用户环境变量的更改
1、直接使用命令的执行结果
$(date)==`date` ##优先执行
2、脚本中的传参
非交互模式传参:
$0 ##脚本本身
$1 ##脚本后输入的第一串字符
$2 ##脚本后输入的第二串字符
$* ##脚本后输入的所有字符(“1 2 3”)
$@ ##脚本后输入的所有字符(“1” “2” “3”)
$# ##脚本后输入字符串的个数
交互模式传参:
read -p "Please input word: " (-s) WORD
##-p==显示提示语句;-s==隐藏录入内容;WORD==变量
echo $WORD
##显示变量的值
七、脚本函数
脚本函数本质上就是程序的别名;函数可以使脚本动作循环执行;其设定格式为
函数名称()
{
action1
action2
action3
...
}
函数名称
##在脚本中,函数名称即代表了action1&action2&action3等命令动作
小练习:
sh create_user.sh
please input username:xxx
xxx=exit时脚本退出
xxx存在时:xxx is exist
please input username:xxx
xxx不存在时:
please input password:(不显示内容)
建立用户并且密码会设定为password后输入的字符
echo:xxx is created
please input username: