3000字扫盲shell基础知识(新手必备)

2020-06-25 12:02:14刘景俊

定义一个环境变量

[root@iz2ze0ajic0vbv28hcdctpz ~]# export kaka="kaka"
[root@iz2ze0ajic0vbv28hcdctpz ~]# env |grep kaka
kaka=kaka

删除环境变量

[root@iz2ze0ajic0vbv28hcdctpz ~]# unset kaka
[root@iz2ze0ajic0vbv28hcdctpz ~]# env |grep kaka

w如果长期使用,可以把它们写在配置文件中。/etc/profile 或者 用户家目录的.bash_profile

位置变量 :

我们先定义一个shell。

[root@iz2ze0ajic0vbv28hcdctpz ~]# cat test.sh
#!/bin/bash

echo "执行的文件: $0"
echo "第一个参数: $1"
echo "第二个参数: $2"

执行查看结果。

[root@iz2ze0ajic0vbv28hcdctpz ~]# chmod +x test.sh
[root@iz2ze0ajic0vbv28hcdctpz ~]# ./test.sh 1 2
执行的文件: ./test.sh
第一个参数: 1
第二个参数: 2

预定义变量:

常用的预定义变量有如下几个。

#!/bin/bash

echo "执行的文件: $0"
echo "第一个参数: $1"
echo "第二个参数: $2"
echo "所有参数: $*"
echo "当前脚本的pid: $"
echo "脚本参数个数: $#"

查看执行结果

[root@iz2ze0ajic0vbv28hcdctpz ~]# ./test.sh 1 2
执行的文件: ./test.sh
第一个参数: 1
第二个参数: 2
所有参数: 1 2
当前脚本的pid: 30170
脚本参数个数: 2

查看上一个命令执行结果。

[root@iz2ze0ajic0vbv28hcdctpz hello]# ls
test
[root@iz2ze0ajic0vbv28hcdctpz hello]# echo $?
0

shell 运算符

shell也是一门语言其实和其他的语言运算符大同小异,不过这里我们还是来说一下。本节说一下运算符相关内容。

运算符种类

算数运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符

算数运算符

命令: expr
作用:   求表达式的值
语法:    expr 表达式
规则:

​    运算符号两边要有空格 遇到特殊符号如*号需要在前面加反斜杠 空格和特殊字符串需要用引号括起来

操作:(先编写一个运算相关的shell脚本)

#!/bin/bash
i=1
j=2
addition=`expr $i + $j`
subtraction=`expr $i - $j`
multiplication=`expr $j * $j`
division=`expr $j / $i`
mod=`expr $j % $i`
echo "addition=${addition} , subtraction=${subtraction} , multiplication=${multiplication} , division=${division} , mod=${mod}"

if [ $i == $j ]
then
 echo "i 等于 j"
fi

if [ $i != $j ]
then
 echo "i 不等于 j"
fi