shell基础(保姆式教学)

1.hello world

#! /bin/bash

echo "hello world!"

以上为shell的第一个脚本

我们可以在目录中直接vim hello.sh(创建hello.sh,并编辑)

输入i后开始编辑

#! /bin/bash表示指定该脚本文件应该由哪个解释器来执行。

echo表示输出

编辑完成后,按ESC,输入wq,保存退出

执行脚本可以使用:

sh hello.sh

/bin/bash hello.sh

2.sleep

#! /bin/bash

echo "1"

sleep 5

echo "2"

以上为sleep的简单脚本,表示输出1,等待5秒后输出2

sleep单位默认为秒(s),如果需要其他单位,可在数值后面加上单位,例如sleep 2m(等待2分钟),sleep 1h(等待一小时),sleep 1d(等待一天)

3.variable(变量名)

#! /bin/bash

d = 'date + %H:%M:%S'

echo "begin at $d"

echo "wait 5s"

sleep 5

d1 = 'date + %H:%M:%S'

echo "end at $d"

其中d就相当于变量,这里是输出了当前时间,等待5秒后,再次输出时间d1

其中d和d1后面的不是单引号’‘,而是esc键下面的`

4.数学运算(+、-、*、%、=、/)

#! /bin/bash a=1

b=1

jia=$[$a+$b]

jian=$[$a-$b]

cheng=$[$a*$b]

yu=$[$a%$b]

chu=$[$a/$b]

echo "jia:$jia"

echo "jian:$jian"

echo "cheng:$cheng"

echo "yu:$yu"

echo "chu:$chu"

以上为加减乘除余等基本用法,需要注意书写格式

5.键值变量read

#! /bin/bash

read -p "Please input a number:" a

read -p "Please input another number:" b

sum=$[$a+$b]

echo "sun=$sum"

以上为一个键值的基本用法,这表示输入两个数字为a和b,求他们的和

其中read用于读取您从键盘输入的值,包括字符串等

read与read -p的区别就是后面""的提示语,read不显示提示信息

6.系统变量

$0:shell本身文件名

$?:最后运行命令的返回值

$!:shell最后运行的后台process的PID

$$:shell本身的pid

$#:shell的参数个数

$@:所有参数列表,以"$1 $2 ... $n"的形式输出所有参数,可超9个

$*:所有参数列表,以"$1" "$2" ... "$n"的形式输出所有参数

#! /bin/bash

echo "$0"

echo "$1"

echo "$2"

echo "$?"

echo "$!"

echo "$$"

echo "$*"

echo "$@"

echo "$#"

当我们运行时,传入两个参数sh option.sh 1 2(其中option.sh为文件名,$1 = 1,$2 = 2)

以上内容输出结果为:

option.sh

1

2

0

3525

1 2

1 2

2

7.函数定义

形参:不是实际存在的变量,又称虚拟变量

实参:在调用有参函数时,函数名后面括号内的参数为”实际参数“

#! /bin/bash

function sum(){

read -p "Please inout a number:" a

read -p "Please input another number:" b

sum=$[$a+$b]

echo "sum=$sum"

}

sum $a $b

以上为shell定义函数sum的简单例子

定义函数sum,输入a,b的值,求他们的和,并输出

这个例子也可以用系统变量来进行书写:

#! /bin/bash

function sum()

{

sum=$[$1+$2]

echo "sum=$sum"

}

sum $1 $2

执行时传入$1,$2的值,例如sh function1.sh 1 2

输出结果:sum=3

8.判断语句if

#! /bin/bash

function case()

{

read -p "Please inout a number:" a

read -p "Please input another number:" b

if ((a==b)); then

he=$[$a+$b]

echo "he:$he"

elif ((a>b)); then

jian=$[$a-$b]

echo "a>b:$jian"

else

jian1=$[$b-$a]

echo "a<b:$jian1"

    fi

}

case $a $b

以上代码为if判断的一个语句

定义函数case,输入a,b的值做判断

如果a的值等于b的值,输出a+b

如果a的值大于b的值,输出a-b

如果a的值小于b的值,输出b-a

then表示当条件为真时,执行后面语句

第一个判断用if,第二个判断用elif,最后一个用else,最终用fi结束,条件为两个(),后面接分号;然后接上then

9.case判断

#! /bin/bash

read -p "Please input a number:" a

b=$[$a%2]

case $b in

1)

echo "weijishu"

;;

0)

echo "weioushu"

;;

*)

echo "feishu"

;;

esac

以上是用case写的判断一个数的奇偶性

输入a的值,取a与2的余数赋值给b,b=1时为奇数,b=*(除0,1以外任何数)时为非数,注意使用格式

10.while循环

-eq:等于

-ne:不等于

-le:小于等于

-ge:大于等于

-lt:小于

-gt:大于

#! /bin/bash

a=10

while [ $a -gt 1 ]; do

echo $a

a=$[$a-1]

done

以上为一个while递减的脚本,a等于10,当a大于1时,输出a,同时a=a-1,以此往复循环,直到a不大于1时停止

注:while [] 循环中[]内的条件语句开头和结尾记得空格

11.for循环

#! /bin/bash

for i in `seq 1 5`; do

echo $i

done

以上为for循环递增的一个简单例子

seq 1 5表示i起始为1,终止为5

整个程序表示i起始为1,终止为5,以此输出i的全部值

注:seq两边的点为esc键下面的`

12.break中断循环

! /bin/bash

for i in `seq 1 5`;

do

if(($i == 3));

then

break

fi

echo $i

done

以上是一个嵌套循环语句,表示i的取值范围为1-5,从1开始,并输出i的值,当i等于3时,循环停止,结果为1,2

13.continue跳过本次循环

#! /bin/bash

for i in `seq 1 7`

do

if [ $i == 5 ]; then

continue

fi

echo $i

done

以上是一个continue的简单用法,这里用来跳过5

i取值为1-7,依次输出,当i等于5时,跳过本次循环,不执行输出,直接开始下一次循环

结果为1,2,3,4,6,7

14.exit退出进程

#! /bin/bash

for i in `seq 1 5`

do

if [ $i == 3 ]; then

exit

fi

echo $i

done

以上为一个简单的exit例子,当i的值为3时,退出进程,结果为1,2

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值