一.变量的定义
1)定义本身
变量就是内存一片区域的地址
2)变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
二.shell脚本中变量的定义方法![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8c6ad0c9213821e339fe1561b8993b33.png)
但在新开启shell中变量都没有了
(一)环境级别
export A=1
在环境关闭后变量失效
(二)用户级别
vim ~/.bash_profile
export B=3
(三)系统级别
vim /etc/profile
export C=4
或
vim /etc/profile.d/ceshi.sh
export C=4
(四)变量名称
“字符” “_” “数字”
不能用数字开头
建议:
变量名称短全用大写字符
变量名称长用_区分子类
WESTOS
Westos_Linux
westoS_Linux
三.变量的转译
(一)转译
\ #转译单个字符
“” #弱引用,批量转译个数字符 不能转译"" “`” “$” “!”
‘’ #强引用
(二)声明
a=1
echo $ab
echo ${a}b
(三)变量的数组
a=(1 2 3 4 5)
echo ${a[0]}
echo ${a[-1]}
echo ${a[*]}
echo ${a[@]}
echo ${a[@]:0:3}
echo ${#a[@]}
测试
sh create_user.sh userfile
userfile用的用户会被全部建立
10 #!/bin/bash
11 [ "$USER" = "root" ] || {
12 echo -e "\033[31mError:please run with root\033[0m"
13 exit
14 }
15 [ "$1" = "userfile" ]&&{
16 for i in $(cat $1)
17 do
18 id $i &>/dev/null &&{
19 echo -e "\033[31mError:$i is exist\033[0m"
20 }||{
21 useradd $i
22 echo -e "\033[32m$i created\033[0m"
23 }
24 done
25 }||{
26 echo -e "\033[31mError:please input $1 with script\033[0m"
27 }
四.Linux中命令的别名设定
alias xie='vim' ##临时设定
vim ~/.bashrc
alias xie='vim' ##只针对与用户生效
source ~/.bashrc
vim /etc/bashrc ##针对系统所以用户生效
alias xie='vim'
source /etc/bashrc
unalias xie ##删除当前环境中的alias
五.用户环境变量的更改
环境变量:
用户在操作系统时使用到的命令搜索路径
设定方式:
(一)~/.bash_profile
export PATH=$PATH:/mnt
(二)/etc/profile
export PATH=$PATH:/mnt
六.利用命令的执行结果设定变量
(一)直接利用命令执行结果
$()|`` ##优先执行
TEST=`hostname` TEST=$(hostname)
(二)脚本中的传参
1.非交互模式:
$0 is file1.sh ##脚本本身
$1 is westos ##脚本后所输入的第一串字符
$2 is linux
$3 is redhat
$# is 3 ##脚本后所输入的字符串个数
$* is westos linux redhat ##脚本后所输入的所有字符"westos linux redhat"
$@ is westos linux redhat ##脚本后所输入的所有字符'westos' 'linux' 'redhat'
∗
和
* 和
∗和@的区别
2.交互模式传参:
read WESTOS ##对westos赋值
read -p “please input word:” ##输出提示语
-s ##隐藏输入内容
测试脚本
1 #!/bin/bash
2 [ "$USER" = "root" ]||{
3 echo "Error:please run $0 with root!!"
4 }
5 [ "$1" = "add" ]||[ "$1" = "del" ]&&{
6 [ "$1" = "add" ]&&{
7 read -p "please input username:" USERNAME
8 id $USERNAME &>/dev/null &&{
9 echo $USERNAME is exist
10 }||{
11 useradd $USERNAME
12 read -p "please input passwd:" PASSWD
13 echo $PASSWD | passwd --stdin $USERNAME &>/dev/null
14 echo "$USERNAME is created"
15 }
16 }||{
17 read -p "please input username:" USERNAME
18 id $USERNAME &>/dev/null &&{
19 userdel -r $USERNAME
20 echo "$USERNAME is deleted"
21 }||{
22 echo "$USERNAME is not exist!!"
23 }
七.脚本函数
定义:程序的别名
设定方式:
WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作
1 #!/bin/bash
2 ACTION(){
3 echo hello word
4 ACTION
5 }
6 ACTION
一直输出hello word
(一)测试脚本
1 #!/bin/bash
2 CHECK(){
3 read -p "please input word:" WORD
4 WORD=`echo $WORD | tr 'A-Z' 'a-z'`
5 [ "$WORD" = "westos" ]&&{
6 echo linux
7 CHECK
8 }||[ "$WORD" = "linux" ]&&{
9 echo westos
10 CHECK
11 }||[ "$WORD" = "exit" ]&&{
12 echo bye
13 exit
14 }||{
15 echo Error word
16 CHECK
17 }
18 }
19 CHECK
(二)测试脚本
1 #!/bin/bash
2 [ "$USER" = "root" ]||{
3 echo "Error:please run $0 with root!!"
4 }
5 ACTION()
6 {
7 read -p "please input action:" WORD
8 [ "$WORD" = "add" ]&&{
9 ADD
10 }||[ "$WORD" = "del" ]&&{
11 DEL
12 }||[ "$WORD" = "exit" ]&&{
13 exit
14 }||{
15 echo "Error:please input add | del"
16 ACTION
17 }
18 }
19 ADD()
20 {
21 read -p "please input username:" USERNAME
22 id $USERNAME &>/dev/null &&{
23 echo $USERNAME is exist
24 ADD
25 }||{
26 useradd $USERNAME
27 read -p "please input passwd:" PASSWD
28 echo $PASSWD | passwd --stdin $USERNAME &>/dev/null &&{
29 echo "$USERNAME is created"
30 ACTION
31 }
32 }
33 }
34 DEL()
35 {
36 read -p "please input username:" USERNAME
37 id $USERNAME &>/dev/null &&{
38 userdel -r $USERNAME
39 echo "$USERNAME is deleted"
40 ACTION
41 }||{
42 echo "$USERNAME is not exist!!"
43 DEL
44 }
45 }
46 ACTION