初识shell命令

1. 文件以#! /bin/bash开头,其中的#!是约定的标记,告诉系统这个脚本需要什么编译器来执行,即使用哪一种shell。

2.新建一个文件,first_shell.sh,然后输入以下内容

#! /bin/bash
echo "hello world"

用./first_shell.sh命令执行,如果输出hello world,则说明执行成功了,如果显示-bash: ./first_shell.sh: Permission denied,说明权限不够,需要添加可执行权限,chmod o+x first_shell.sh

3.变量及赋值

#! /bin/bash
name=zhangsan
echo "my name is $name"

注意name和=和zhangsan之间没有空格,有空格就会报错。这几行命令的意思是建立了一个变量name,然后将zhangsan赋值给name,然后输出用$name,加了一个美元符号,将变量输出。

4.传递参数

在执行shell脚本时,可以向脚本传递参数,传递时用空格隔开就行,脚本中获取用$n表示,n代表一个数字,1为脚本的第一个参数,2为脚本的第二个参数,以此类推,0代表可执行的文件。

#! /bin/bash
name=zhangsan
echo "my name is $name"
echo "\$1 is $1"
echo "\$2 is $2"

执行./first_bash.sh 1 2 ,会出现

解释一下,其中\$1是转义,防止$1被当成变量而解析了。

5.$* ,$#,$?解释

先看例子

#! /bin/bash
#file_name:
#authors:yyn
name=zhangsan
echo "my name is $name"
echo "\$0 is $0"
echo "\$1 is $1"
echo "\$2 is $2"
echo "\$* is $*"
echo "\$? is $?"
echo "\$# is $#"

初识shell命令_第1张图片

有两个参数,第一个是1,第二个是2

$*将所有的参数都输出来

$?是显示最后命令的退出状态,0表示没有错误,其它数字表示有错误

$#代表有几个参数

6.if 大小判断的练习

#! /bin/bash
#if的练习
#2018-12-18

NUM=100
if (($NUM > 10));then
        echo "$NUM大于10"
else
        echo "$NUM小于10"
fi

定义一个变量NUM并赋值,然后用if关键词,后面是跟着两个中括号,里面是表达式,后面是分号,然后是关键字then,中间可以输入自己的表达式,然后用else关键字,走不满足上面表达式的情况,最后用fi结尾。

上面的还可以写成

#! /bin/bash
#if的练习
#2018-12-18

NUM=100
if [ $NUM -gt 10 ];then
        echo "$NUM大于10"
else
        echo "$NUM小于10"
fi

用一个空括号来代替两个小括号,需要注意的是if和前中括号之间要有空格,前中括号的右边,后中括号的左边必须有空格,否则会报错。-gt就是大于的意思。还有-lt小于,-eq等于,-ne不等于,-ge大于等于,-le小于等于。

7.if 关于目录的练习

#! /bin/bash
#if 关于目录的练习
#2018-12-18
DIR=/root/shell/20181218
if [ -d $DIR ];then
        echo -e "\033[32m$DIR目录已经存在,请退出\033[0m"
else
        mkdir -p $DIR
        echo -e "\033[32m$DIR目录创建成功\033[0m"
fi

解释一下,首先定义一个变量并将一个目录赋给这个变量,然后用-d判断目录是否存在,不存在就创建这个目录。echo -e "033[32m ************\033[0m"这个输出的是带颜色的文字。

8.if关于文件的练习

#! /bin/bash
#关于文件的练习
#2018-12-18
FILE=/root/shell/test.txt
if [ -f $FILE ];then
        cat $FILE
else
        echo -e "\033[32m创建文件$FILE成功\033[0m"
        echo "ok">>$FILE
fi

解释一下,定义一个变量,然后将一个文件的目录赋值给这个变量,用-f判断文件存不存在,如果存在就输出里面的内容,如果不存在就输出一段话,并且将ok追加到这个文件中。

9.多个条件的判断

#! /bin/bash
#成绩等级输出
SCORE=80
if [ $SCORE -ge 90 ];then
        echo "A"
elif [ $SCORE -ge 80 ];then
        echo "B"
elif [ $SCORE -ge 70 ];then
        echo "C"
elif [ $SCORE -ge 60 ];then
        echo "D"
else
        echo "E"
fi

10.其实上面的成绩可以做成动态的,让用户输入,然后判断等级

#! /bin/bash
#成绩等级输出
SCORE=$1
if [ -z $SCORE ];then
        echo "error:{成绩不能为空}"
        exit
fi

if [ $SCORE -ge 90 ];then
        echo "A"
elif [ $SCORE -ge 80 ];then
        echo "B"
elif [ $SCORE -ge 70 ];then
        echo "C"
elif [ $SCORE -ge 60 ];then
        echo "D"
else
        echo "E"
fi

里面又多了个一个 -z,代表为不为空,获取第一个参数,如果为空,就提出提示,然后停止往下进行。

你可能感兴趣的:(Linux)