1、打开shell世界的大门
#!/bin/bash
echo 'Hello World!'
2、变量的最基本使用,定义一个name变量并输出
#!/bin/bash
name='Shaw Lee'
echo "my name is $name"
3、定义一个变量,输出当前时间,要求格式为“年-月-日 时:分:秒”
#!/bin/bash
dt=`date +'%F %T'` # 注意这里要用反引号(``)包括
echo $dt
4、只读变量(了解)
语法:readonly 变量名
#!/bin/bash
num=10
readonly num
num=20
echo $num
# 输出:10
5、接受用户输入
语法:read -p 提示信息 变量名
案例:编写一个脚本,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件
#!/bin/bash
read -p 请输入需要创建的文件路径: filepath
touch $filepath
echo '文件创建成功'
ls -l $filepath
6、删除变量(了解)
语法:unset 变量名
#!/bin/bash
b=20
echo $b
unset b
echo $b
7、条件判断语句
#!/bin/bash
read -p 请输入你的分数: goal
echo '你的评级是:'
if [ $goal -lt 60 ]
then
echo ' 不及格'
elif [ $goal -lt 80 ]
then
echo ' 良好'
else
echo ' 优秀'
fi
8、算数运算符
#!/bin/bash
a=10
b=20
echo "a=$a"
echo "b=$b"
echo ""
echo 'a+b='`expr $a + $b`
echo 'a-b='`expr $a - $b`
echo 'a*b='`expr $a \* $b`
echo 'b/a='`expr $b / $a`
echo 'b%a='`expr $b % $a`
# 判断是否相等
if [ $a == $b ]
then
echo 'a等于b'
else
echo 'a不等于b'
fi
# 判断是否不相等
if [ $a != $b ]
then
echo 'a不等于b'
else
echo 'a等于b'
fi
9、关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
运算符 | 英文解释 | 说明 | 语法 |
---|---|---|---|
-eq | equal | 检测两个数是否相等,相等返回true | [ b ] |
-ne | not equal | 检测两个数是否相等,不相等返回true | [ b ] |
-gt | great than | 检测左边的数是否大于右边的数,如果是,返回true | [ b ] |
-lt | less than | 检测左边的数是否小于右边的数,如果是,返回true | [ b ] |
-ge | great than or equal | 检测左边的数是否大于等于右边的数,如果是,返回true | [ b ] |
-le | less than or equal | 检测左边的数是否小于等于右边的数,如果是,返回true | [ b ] |
#!/bin/bash
a=20
b=10
echo "a=$a"
echo "b=$b"
echo
# 判断相等
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
10、逻辑上运算符
运算符 | 说明 | 语法 |
---|---|---|
! | 非运算,表达式为true则返回false,否则返回true | [ ! false ] |
-o(or) | 或(或者)运算,有一个表达式为true则返回true | [ b -gt 100 ] |
-a(and) | 与(并且)运算,两个表达式都为true才返回true | [ b -gt 100 ] |
#!/bin/bash
a=10
b=20
# 非运算
if [ ! $a -lt $b ]
then
echo 'a > b'
else
echo 'a < b'
fi
# 或运算
if [ $a -lt 20 -o $b -lt 20 ]
then
echo '真'
fi
# 与运算
if [ $a -gt 5 -a $b -gt 10 ]
then
echo '真'
fi
11、字符串运算符
运算符 | 说明 | 语法 |
---|---|---|
= | 检测两个字符串是否相等,相等返回true | [ b ] |
!= | 检测两个字符串是否相等,不相等返回true | [ b ] |
-z (zero) | 检测字符串长度是否为0,为0返回true | [ -z $a ] |
-n | 检测字符串长度是否为0,不为0返回true | [ -n $a ] |
str | 检测字符串是否为空,不为空返回true | [ $a ] |
#!/bin/bash
a='abc'
b='def'
if [ $a = $b ]
then
echo 'a等于b'
else
echo 'a不等于b'
fi
if [ $a != $b ]
then
echo 'a不等于b'
else
echo 'a等于b'
fi
if [ -z $a ]
then
echo 'a等于0'
else
echo 'a不等于0'
fi
if [ -n $a ]
then
echo 'a不等于0'
else
echo 'a等于0'
fi
if [ $a ]
then
echo 'a不为空'
else
echo 'a为空'
fi
12、文件测试运算符(重点)
运算符 | 说明 | 语法 |
---|---|---|
-d file | 检测文档是否是目录,是则返回true | [ -d $file ] |
-f file | 检测文档是否是文件,是则返回true | [ -f $file ] |
-r file | 检测文件是否可读,是则返回true | [ -r $file ] |
-w file | 检测文件是否可写,是则返回true | [ -w $file ] |
-x file | 检测文件是否可执行,是则返回true | [ -x $file ] |
-e file | 检测文件(包括目录)是否存在,存在则返回true | [ -e $file ] |
#!/bin/bash
file='/g/StudyDemo/shell_study/testFile.txt'
dir='/g/StudyDemo/shell_study/testDir'
if [ -d $dir ]
then
echo 'dir是目录'
else
echo 'dir不是目录'
fi
if [ -f $file ]
then
echo 'file是文件'
else
echo 'file不是文件'
fi
if [ -r $file ]
then
echo 'file可读'
else
echo 'file不可读'
fi
if [ -w $file ]
then
echo 'file可写'
else
echo 'file不可写'
fi
if [ -x $file ]
then
echo 'file可执行'
else
echo 'file不可执行'
fi
if [ -e $dir ]
then
echo 'dir存在'
else
echo 'dir不存在'
fi
13、shell脚本附带选项
# option.sh
#!/bin/bash
echo $0 $1 $2 $3
终端输入 #./option.sh a b c
在脚本中可以用"$1"表示a,"$2"表示b,以此类推。("$0"是执行的脚本文件名)