shell的基本语法

 1.什么是shell编程
               就是把我们前面学习过的linux命令(shell命令),利用shell编程的语法规则组织起来,形成一个脚本程序,自动管理我们的linux系统
               脚本程序:不需要编译器编译(解释型的编程语言),代码写好以后直接就能运行
                               比如:设计网页html5语言就是脚本程序
                                         shell编程也是一种脚本编程语言
     
    2.第一个脚本程序
             shell脚本: 要求后缀名是.sh
                               #可以注释掉单行
             shell脚本运行:
                          方法一:  ./脚本的名字         
                                         ./first.sh
                          方法二: source  脚本的名字
                                        source  first.sh
             分析shell脚本的语法结构:
                          解释器:翻译并逐句执行你的脚本
                          #!/bin/bash    每个shell脚本必须要写的,指明了shell脚本解释器的路径名
                          echo "good good study,day day up"
             肤浅的认识:shell脚本很简单,就是把命令写进去就可以了
          
    3.shell编程语法规则
             (1)变量
                         语法规则:变量名=赋值    //变量没有类型
                         获取变量的值:$变量名
                         三种类型的变量:普通变量   命令行变量    环境变量
                                第一种:普通变量
                                第二种:命令行变量(类似于C语言的主函数传参)
                                                $1    类似于argv[1]
                                                $n    类似于argv[n]
                                                $#   参数的个数  argc-1
                                                $?    返回上一条命令执行的结果    执行成功返回0     执行失败返回非零
                                                $*    所有的参数argv[1]一直到argv[n] 
                               第三种:环境变量
                                            export  PATH=某个路径:$PATH
                                            export  LD_LIBRARY_PATH=某个路径:$LD_LIBRARY_PATH
             (2)输入输出
                     输入:  read
                                 read  m n  连续读取两个变量,输入的时候空格隔开
                     输出:  echo
             (3)特殊符号
                              第一种:双引号"",单引号'   ',反引号`  `
                                           双引号 --》用来表示字符串,原样输出字符串
                                           单引号 --》也能表示字符串,原样输出
                                           反引号 --》调用执行shell命令
                             第二种:取值范围
                                          [0-9]      从0--9中选择一个数字
                                          [a-z]      从a-z中选择一个字母
                                          [Azb94h]  从中括号中挑选一个字符出来
                                          [^0-9]   取反操作,非数字
             (4)基本运算
                            加 +   减 -   乘 *  除  /
                           `expr $m + $n`    //加号左右两边必须有一个空格
                           `expr $m - $n`  
                           `expr $m \* $n` 
                           `expr $m / $n` 
             (5)循环,条件判断,case语句
                         第一种:循环
                                总共有三种循环写法:for   while   until
                                5.1 for循环
                                          语法规则: for 变量 in 范围
                                                            do
                                                                    要执行的代码;
                                                            done
                                          范围的写法: `seq 0 5`
                               5.2 while循环
                                          语法规则: while 条件      //条件成立就执行循环
                                                            do
                                                                    要执行的代码;
                                                            done    
                                          条件的写法:用到test语句
                                                     写法一: test 条件
                                                                   if test $m -gt $n
                                                     写法二: [ 条件 ]      写法二等价于写法一,写法二省略了test这个单词  
                                                                   if [ $m -gt $n ] 
                               5.3 until循环
                                         语法规则: until 条件       //条件不成立就执行循环
                                                           do
                                                                  要执行的代码;
                                                           done    
                               5.4 多个条件
                                         while [ 条件1 && 条件2 ]    
                                         while [ 条件1 || 条件2 ]
                              5.5 退出循环
                                        break
                                        continue
                        第二种:条件判断  
                              写法一:一种情况判断
                                            if 条件
                                            then
                                                    要执行的代码;
                                            fi   
                             写法二:二种情况判断
                                           if 条件
                                           then
                                                    要执行的代码;
                                           else
                                                   要执行的代码; 
                                           fi
                            写法三:三种及以上情况判断
                                           if 条件
                                           then
                                                    要执行的代码;
                                           elif 条件
                                           then 
                                                   要执行的代码; 
                                           else
                                                   要执行的代码; 
                                           fi       
                           注意: 
                                     第一:只要有if的地方,必须有then, 结尾fi容易忘记
                                     第二:字符串比较大小,>   <需要转义
                                     第三:条件的第二种写法,中括号左右两边都必须有一个空格       
                          第三种:case
                                       语法规则:  case 变量值 in
                                                          1)
                                                                   执行代码
                                                                   ;;
                                                          2)
                                                                   执行代码
                                                                   ;;
                                                          esac
                                       注意:case里面不能使用break
                                                 case对于变量值没有限制,可以是任何数据
                                                                       
             (6)函数
                       6.1 函数的定义
                                    语法规则:      函数名()
                                                          {
                                                                 具体代码
                                                          }
                                    注意要点:
                                                第一:shell编程的函数都是没有返回值类型的
                                                第二:圆括号不能有任何参数
                                                第三:如果你写的函数需要传递实参,那么函数的代码中可以用$1    $2      $3 .......   $n分别表示第一个,第二个,第三个.......第n个参数
                       6.2 函数的调用
                                   函数名  实参1  实参2 ...........实参n
                                   实参1跟$1对应    实参n跟$n对应
                       6.3 函数的返回值
                                   如何得到返回值:  $?得到
                                   返回值取值范围:  0---255之间

 case.sh

#!/bin/bash

echo "pls 1. login   2. remove  3. add!"
read n

case $n in
1)
	echo "login"
	;;
2)
	echo "remove"
	;;
3)
	echo "add"
	;;
esac

for.sh

#!/bin/bash

for i in `seq 3 10`
do
	echo "i is: $i"
done

for.sh

#!/bin/bash
sum=0
for i in `seq $1 $2`
do
	sum=`expr $sum + $i`	
done

echo "$1----$2 result is:$sum"

if.sh

#!/bin/bash

if test -e 1.txt
then
	echo "1.txt is exist"
else
	echo "1.txt is not exist"
fi

if.sh

#!/bin/bash

echo "pls input two strings"
read str1
read str2

if test $str1 \> $str2
then
	echo "str1>str2"
elif test $str1 \< $str2
then
	echo "str1<str2"
else
	echo "str1==str2"
fi

until.sh

#!/bin/bash
i=0

until [ $i -gt 5 ]
do
	echo "hello world i is:$i"
	i=`expr $i + 1`
done

while.sh

#!/bin/bash

i=0

while [ $i -le 5 ]
do
	echo "hello world"
	i=`expr $i + 1`
done

打印test语句的返回值

#!/bin/bash

test -e 1.txt
echo $?

演示$?的含义

#!/bin/bash

ls -l haha.sh
ls -l 1.sh
echo $?

单引号和反引号

#!/bin/bash

echo 'hello world'
#echo `hello world`

echo `ls`

ls -l

定义普通变量

#!/bin/bash
m=666
n=12.5
buf="hello"
a=-12

echo $m
echo $n $buf $a

函数的定义和调用

#!/bin/bash

fun()
{
	echo "hello world"
}

myadd()
{
	echo "$1 + $2 is:`expr $1 + $2`"	
}

myaddplus()
{
	return `expr $1 + $2 + $3`
}

fun
myadd 12 13
myadd 16 15
myaddplus 12 13 45



函数的返回值

#!/bin/bash

myadd()
{
	return `expr $1 + $2`
}

fun()
{
	return -1  #函数返回值0--255之间
}

#fun1()
#{
	#return "hello"  不能返回字符串
#}

fun2()
{
	return 300  #函数返回值0--255之间
}


#ret=myadd 12 13  经典错误,自以为是
#echo $ret


myadd 12 13
echo $?

fun
echo "fun return is: $?"

fun2
echo "fun2 return is: $?"


函数的练习

#!/bin/bash

getmax()
{
	maxnum=$1
	if test $maxnum -lt $2
	then
		maxnum=$2
	fi

	if test $maxnum -lt $3
	then
		maxnum=$3
	fi

	echo "max is: $maxnum"
}

getmax 45  6   963

命令行传递参数

#!/bin/bash

mkdir /home/gec/$1

命令行参数

#!/bin/bash
echo $0
echo $1
echo $2
echo $*
echo $#
echo $?

输入和输出.sh

#!/bin/bash
echo "please input a number"
read a
echo $a


echo "please input a string"
read b
echo $b

echo "please input a double"
read c
echo $c

echo "please input two numbers"
read d e
echo $d $e

双引号.sh

#!/bin/sh


echo "ls -l result is: ls -l"
echo "ls -l result is: 'ls -l'"
echo "ls -l result is: `ls -l`"

演示基本运算

#!/bin/bash
m=99
n=77

#echo $m+$n         #经典错误
#echo `expr $m + $n`  
#echo `expr $m+$n`  #错误,加号左右两边必须有空格

echo `expr $m - $n`
echo `expr $m \* $n`
echo `expr $m / $n`

条件的第二种写法

#!/bin/bash
echo "pls input two numbers"
read a
read b

#if test $a -gt $b

if [ $a -gt $b ]
then
	echo "a>b"
fi

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值