1.变量的定义
1)定义
变量是计算机内存的单元(即变量就是内存中一片区域的地址),其中存放的值可以改变。当 Shell 脚本需要保存一些信息时,如一个文件名或一个数字,就把它存放在一个变量中。
2)变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
2.shell脚本中变量的定义方式(三种)
1)环境级别
只对当前环境生效,在环境关闭后变量失效
赋值方式:export a=1
2)用户级别
只对某个用户生效,对其他用户不生效
vim ~/.bash_profile
export a=5
写完之后需要执行:source .bash_profile使得更改生效
3)系统级别
对某个系统生效,其他系统不生效
vim /etc/profile
export a=2
或
在/etc/profile.d目录下写一个子文件
vim /etc/profile.d/westos.sh
export b=3
4)变量名称
名称的组成元素:“字符”、 “_” 、“数字” ,但不能以数字开头。
建议: 变量名称短时全用大写字符,变量名称长时用 ” _“ 区分子类
例如:WESTOS、Westos_Linux、westoS_Linux
3.变量的转译
1) 变量的转译
\ #转译单个字符
"" #弱引用,批量转译特殊字符,但不能转译"\" "`" "$" "!"
'' #强引用,批量转移所有特殊字符
2)变量的声明
a=1
echo $ab
echo ${a}b
3)变量的数组
a=(1 2 3 4 5) #定义一个数组
echo ${a[0]} #输出数组的第一个字符
echo ${a[-1]} #输出数组的最后一个字符(-2表示倒数第二个)
echo ${a[*]} #输出数组的所有字符,所有字符是一个整体,相当于输出”1 2 3 4 5“
echo ${a[@]} #输出数组的所有字符,每个字符都是单个的,相当于输出”1“ ”2“ ”3“ ”4“ ”5“
区别:echo ${a[* ]}和echo ${a[@]}
神奇的输出:
4.Linux中命令的别名设定
alias xie='vim' #临时设定
vim ~/.bashrc
alias xie='vim' #只针对某个用户生效
source ~/.bashrc
vim /etc/bashrc #针对系统所有用户生效,编辑shell的配置文件
alias xie='vim'
source /etc/bashrc
unalias xie #删除当前环境中的alias
练习:
执行命令sh create_user.sh userfile passfile
效果:
userfile里的用户会被全部建立
passfile中的密码会被全部设定到建立的用户
5.用户环境变量的更改
环境变量(environment variables):一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。默认情况下,执行命令时需要用命令的绝对路径或者./去执行。如果把命令放到设置了环境变量的目录中,则该命令可以直接用命令的名称去调用,而不需要加路径。
查看环境变量:echo $PATH
设定环境变量:
用户级的:
vim ~/.bash_profile
给文件中添加:
export PATH=$PATH:/mnt
source ~/.bash_profile
系统级的:
vim /etc/bash_profile
给文件中添加:
export PATH=$PATH:/mnt
注意:$PATH是旧的环境变量的目录,/mnt是新添的环境变量的目录,
因此,$PATH一定要写,如果直接写/mnt会使得所有的环境变量只有/mnt目录,其他的目录就没了
source /etc/bash_profile
示例:系统级环境变量的设定
6.利用命令的执行结果设定变量
1)直接利用命令执行结果
$()|`` #优先执行
例如:
TEST=`hostname`
或
TEST=$(hostname)
如:
2)脚本中的传参
将脚本之外的参数传递到脚本内部,如执行create_user.sh userfile passfile时,是将userfile和passfile文件中的内容传递到脚本之中去。
非交互模式:
$0 is /mnt/test.sh #脚本本身
$1 is weiwei #脚本后所输入的第一串字符
$2 is linux #脚本后所输入的第二串字符
$3 is redhat #脚本后所输入的第三串字符
$* is weiwei linux redhat #脚本后所输入的所有字符"weiwei linux redhat"
$@ is weiwei linux redhat #脚本后所输入的所有字符'weiwei' 'linux' 'redhat'
$# is 3 #脚本后所输入的字符串个数
交互模式传参:
read WESTOS #对WESTOS赋值
read -p "please input word:" #输出提示语
-s #隐藏输入内容
非交互模式传参:
交互模式传参:
7.脚本函数
函数通俗理解:将脚本的程序模块写成一个字符串,然后调用该字符串就可以使用该模块。
定义:
程序的别名 设定方式:
WORD()
{
action1
action2
}
WORD就是函数,在脚本中就代表action1 action2这两个动作
举例:
结束!!!