shell环境变量的设定
一.变量的定义
一、定义本身
变量就是内存一片区域的地址
二、 变量存在的意义
命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标可以解决此问题
二.shell脚本中变量的定义方法
一、环境级别
export a=1
开启新的shell依然生效
二、用户级别
vim ~/.bash_profile
\\\
export a=1
\\\
source ~/.bash_profile
ssh退出登陆,再次进入相同用户后依然生效
三、系统级别
vim /etc/profile.d/westos.sh ##系统子目录里面
\\\
export b=3
\\\
source /etc/profile.d/westos.sh
切换用户后仍然能生效
三、变量名称
一、变量名称可包含的字符
字母
下划线_
数字
二、建议:
变量名称短全用大写字符
变量名称长用_区分子类
例如:
WESTOS
Westos_Linux
westoS_Linux
三 、修改linux指令窗口的格式
四、变量的转译
一、转译
\ | 转译单个字符 |
---|---|
“” | 弱引用,批量转译个数字符 不能转译"\ " “” “$” “!” |
‘’ | 强引用 |
\
可以转译字符,但是只能转译一个字符
“”
是弱转译,可以实现批量转译
“”
但是转译不了$,\符号
‘’
是强转译
二、声明
a=1 a是一个变量
echo $ab 此时,ab是一个整体变量,输出为空
echo ${a}b 应该对a变量声明,输出为1b
伍、变量的数组
一、基本命令
令a=(1 2 3 4 5)
echo ${#a[@]} | 数组中个个数 |
---|---|
echo ${a[0]} | 数组中第一个元素 |
echo ${a[-1]} | 数组中最后一个元素 |
echo ${a[*]} | 数组中所有元素 |
echo ${a[@]} | 数组中所有元素 |
echo ${a[@]:0:3} | 数组中从0开始,显示三个元素 |
unset a[n] | 删除数组中的第n1个元素 |
unset a | 删除a这个数组 |
六、Linux中命令的别名设定
一、临时设定
alias xie='vim'
二、永久设定
1)只针对当前用户
vim ~/.bashrc
\\\
alias xie='vim'
\\\
source ~/.bashrc
2)针对系统所有用户生效
vim /etc/bashrc
\\\
alias xie='vim'
\\\
source /etc/bashrc
去除alias设定
unalias xie ##删除当前环境中的alias
七、用户环境变量的更改
改变执行文件(脚本等)的系统搜索路径,不用加绝对路径也能执行。
echo $PATH 查看当前的搜索路径
冒号为分割符
ls命令的绝对路径是/bin/ls,我们可以在系统的任意位置处直接使用ls命令查看当前所在目录中的内容,但不能在系统的任意位置处直接使用test.sh命令执行/mnt目录下的test.sh脚本。这是因为系统环境变量$PATH指定的目录中包含ls所在的/bin,所以我们可以在系统的任意位置处直接使用ls命令。
一、设定方式
将/mnt/test.sh加入到系统环境变量,可以直接启动
(1)针对当前用户
vim ~/.bash_profile
source ~/.bash_profile
chmod +x /mnt/test.sh
test.sh
(2)针对全部用户
vim /etc/bash_profile
二、脚本中的传参
脚本读取外部输入的方式
非交互模式输入:
sh mnt/test.sh westos linux redhat
含义:
字符 | 等于 | 含义 |
---|---|---|
$0 | test.sh | <!脚本本身> |
$1 | westos | <!脚本后所输入的第一串字符> |
$2 | linux | <!脚本后所输入的第二串字符> |
$3 | redhat | <!脚本后所输入的第三串字符> |
$* | westos linux redhat | 代表"westos linux redhat" |
$@ | westos linux redhat | 代表"westos" “linux” “redhat” |
$# | 3 | 统计输入的个数 |
八、脚本函数
交互式脚本(需要自己输入)
函数名称()
{
action1
action2
}
函数名称 在脚本中该函数名称就代表了action1 action2这两个命令动作
九、练习题
1、编辑脚本test.sh,在其中编写脚本函数READ:输出提示语提示用户输入字符串,隐藏输入内容并读取用户输入的字符串将其赋值给变量WORD,判断变量WORD的值是否为exit,如果是exit则提示bye并退出脚本运行,如果不是exit则输出显示用户输入的字符串并再次调用脚本函数READ,至此脚本函数READ编写完成,在脚本中调用该函数
#!/bin/bash
READ()
{
read -p "please input word: " -s WORD 输入的值赋予给WORD,-s隐藏输入的值
echo -e "" 空行
[ "$WORD" = "exit" ] && { 设置退出模式
echo bye
exit
}||{
echo $WORD 输出WORD的值
READ 循环执行READ
}
}
READ 执行READ
2、编写创建用户的脚本create_user.sh,在执行该脚本时提示请输入用户名,当输入的用户名为exit时脚本退出运行,当输入的用户名不为exit时判断该用户是否存在,如果用户存在则输出用户已存在并再次提示请输入用户名,如果用户不存在则提示请输入密码并隐藏用户输入的密码,此用户会自动建立并且密码为提示后输入的密码,接着显示用户建立完成并再次提示请输入用户名
#!/bin/bash
FILE()
{
read -p "please input the new user name: " USERNAME
[ $USERNAME = 'exit' ] && {
exit
}
id $USERNAME &> /dev/null && {
echo ""
echo "$USERNAME is exist"
echo ""
FILE
}||{
echo ""
read -p "please input passwd" -s PASSWD
useradd $USERNAME
useradd $USERNAME | passwd --stdin $PASSWD
echo ""
echo "$USERNAME is created"
echo ""
FILE
}
}
FILE