shell入门

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 'ab'
fi

# 判断是否大于等于
if [ $a -ge $b ]
then
    echo 'a>=b'
else
    echo 'ab'
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"是执行的脚本文件名)

你可能感兴趣的:(shell入门)