shell脚本-01

使用变量时,建议给所有变量 按照${变量名} 的方式使用。

字符串建议使用双引号""包括,

命令的结果保存到变量:      变量=$(命令的结果)  不推荐 `命令的结果`

读取某一文件内容:     cat /目录/文件名

只读变量:    readonly 变量名="值"

命令行参数:     $0 当前脚本的名字  从$1开始 是脚本需要的参数   $?  获取上一个命令执行后的结果 

                        $* 所有参数

转义字符:    -e

boolean返回值:  1是false   0是true

命令替换:    ` 命令`     shell先执行命令,将执行结果暂存,等到合适时间再输出.

#! /bin/bash

riqi=`date`
echo ${riqi}
echo "------------------------"

riqi=${date}

echo ${riqi}
echo "------------------------"
echo `date`
root@VM-0-17-ubuntu:/home/bash# ./bash08.sh
Thu May 24 16:28:55 CST 2018
------------------------

------------------------
Thu May 24 16:28:55 CST 2018

算术运算符:    +     -     *     /     %     ==     !=      =

#! /bin/bash
a=10
b=20
echo "a+b=: `expr $a + $b`"

echo "a-b=: `expr $a - $b`"

echo "a*b=: `expr $a \* $b`"


echo "a/b=:`expr $a / $b `"

echo "a%b=: `expr $a % $b` "

[ $a == $b ]
echo $?
echo "a=b?: [ $a == $b ]"
[ $a != $b ]
echo $?
echo "a=b?: [ $a != $b ]"

a=${b}
echo ${a}
root@VM-0-17-ubuntu:/home/bash# ./bash04.sh
a+b=: 30
a-b=: -10
a*b=: 200
a/b=:0
a%b=: 10
1
a=b?: [ 10 == 20 ]
0
a=b?: [ 10 != 20 ]
20

关系运算符(支持数字或者全为数字的字符串):  -eq(相等) -ne(不等)  -gt(大于) - lt(小于)   -ge(大于等于)   -le(小于等于)

a=10
b=20

if [ ${a} -eq ${b} ]
then
        echo "${a}==${b}"
else
        echo "${a} != ${b}"
fi

if [ ${a} -ne ${b} ]
then
        echo "${a} != ${b}"
else
        echo "${a}==${b}"
fi

if [ ${a} -gt ${b} ]
then



a=10
b=20

if [ ${a} -eq ${b} ]
then
        echo "${a}==${b}"
else
        echo "${a} != ${b}"
fi

if [ ${a} -ne ${b} ]
then
        echo "${a} != ${b}"
else
        echo "${a}==${b}"
fi

if [ ${a} -gt ${b} ]
then

         echo "${a} > ${b}"
else
         echo "${a} < ${b}"
fi

if [ ${a} -lt ${b} ]
then
         echo "${a} < ${b}"
else
         echo "${a} > ${b}"
fi


if [ ${a} -ge ${b} ]
then
        echo "${a} >= ${b}"
else
        echo "${a} < ${b}"

fi


if [ ${a} -le ${b} ]
then
         echo "${a} <= ${b}"
else
         echo "${a} >= ${b}"
fi
root@VM-0-17-ubuntu:/home/bash# ./bash09.sh
10 != 20
10 != 20
10 < 20
10 < 20
10 < 20
10 <= 20

布尔运算符:  !  非运算符   -o  或    -a  且

a=10
b=20

if [ ${a} == ${b} ]
then
        echo "a==b"
else
        echo "a!=b"
fi

if [ ${a} -lt ${b} -a ${a} -lt 30 ]
then
        echo "a<b and a<30"
else
        echo "exception"
fi

if [ ${a} -lt ${b} -o ${a} -gt 30 ]

then
        echo "a<b or a>30"
else
        echo "exception"
fi
root@VM-0-17-ubuntu:/home/bash# ./bash10.sh
a!=b
a<b and a<30
a<b or a>30

字符串运算符:  

    =  字符串是否相等

    != 是否不相等

    -z 长度是否为空

    -n 长度是否不为空

    str 长度是否为空

a="abc"
b="bcdfg"
echo " [ ${a} = ${b} ] "

[  ${a} = ${b} ]
echo $?


[ -z ${a} ]
echo $?

[ -n ${a} ]
echo $?
root@VM-0-17-ubuntu:/home/bash# ./bash11.sh
 [ abc = bcdfg ]
1
1
0


./bash11.sh: line 24: abc: command not found

文件测试运算符:

file="/home/bash/file1.txt"

echo "是否可读"
[ -r ${file} ]
echo $?

echo "是否可写"
[ -w ${file} ]
echo $?

echo "是否可执行"
[ -x ${file} ]
echo $?

echo "是否是块设备文件"
[ -b ${file} ]
echo $?

echo "是否是字符设备文件"
[ -c ${file} ]
echo $?

echo "是否是目录"
[ -d ${file} ]
echo $?

echo "是否是普通文件"
[ -f ${file} ]
echo $?

echo "是否设置了SGID位"
[ -g ${file} ]
echo $?

echo "是否设置的黏着位"
[ -k ${file} ]
echo $?

echo "是否具有管道"
[ -p ${file} ]
echo $?

echo "是否设置了SUID位"
[ -u ${file} ]
echo $?

echo "文件是否为空"
[ -s ${file} ]
echo $?

echo "文件是否存在"
[ -e ${file} ]
echo $?
root@VM-0-17-ubuntu:/home/bash# ./bash12.sh
是否可读
0
是否可写
0
是否可执行
1
是否是块设备文件
1
是否是字符设备文件
1
是否是目录
1
是否是普通文件
0
是否设置了SGID位
1
是否设置的黏着位
1
是否具有管道
1
是否设置了SUID位
1
文件是否为空
0
文件是否存在
0







猜你喜欢

转载自blog.csdn.net/qq_20867981/article/details/80452046