Ubuntu Linux基础教程 第6章Shell脚本编程初步 期末复习

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


第6章Shell脚本编程初步

6.1脚本入门

6.1.1创建脚本

步骤:

  1. 编写shell脚本
  2. chmod +x shellfile:使脚本文件获得执行权限
  3. ./shellfile:执行脚本文件

6.1.2调试和运行脚本

  • -n:读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
  • -v:一边执行脚本,一边将执行过的脚本命令输出到屏幕上显示
  • -x:提供跟踪执行信息,将执行的每一条命令与结果一次打印出来
  • -e:若有一条命令失败就立即退出
  • -u:置换时把未设置的变量看作出错
  • -c:使Shell解析器从字符串而非文件中读取并执行命令

步骤

  1. 编写shell脚本
  2. 使脚本文件获得执行权限
  3. sh -n shellfile:执行-n命令,若正常则无提示。

注意: 在定义变量时需要注意一下命令规则。

  1. 定义变量时,变量名不加”$“符号;
  2. 变量名和等号之间不能有空格;
  3. 首字符必须是字母;
  4. 中间不能有空格,可以使用下划线(_);
  5. 不能使用标点符号;
  6. 不能使用bash里的关键字;

6.2条件结构化命令

6.2.1使用case语句

#!/bin/bash
echo "PLEASE INPUT YOUR SCORE"
read SCORE
SCORE=$((SCORE/10))
case $SCORE in
6)
	echo "YOUR SCORE IS PASSED"
	;;
7)
	echo "YOUR SCORE IS GOOD"
	;;
8)
	echo "YOUR SCORE IS GREAT"
	;;
9|10)
	echo "YOUR SCORE IS EXCELLENT"
	;;
*)
	echo "YOU FAIL YOU EXAM"
	;;
esac

6.2.2使用if语句

  1. if-elif-else

    #!/bin/bash
    echo "PLEASE INPUT A NUMBER"
    read NUM
    if [ "$NUM" -gt "0" ]		# 双引号可省略
    	then
    	echo "NUMBER IS GREATER THAN ZERO"
    elif [ "$NUM" -lt "0" ]
    	then
    	echo "NUMBER IS LESS THAN ZERO"
    else
    	echo "NUMBET IS EQUAL WITH ZERO"
    fi
    
  2. if-nested-if

    #!/bin/bash
    echo "PLEASE INPUT A NUMBER"
    read NUM
    if [ "$NUM" -eq "0" ]		# 双引号可省略
    	then
    	echo "NUMBET IS EQUAL WITH ZERO"
    else	
    	if [ "$NUM" -gt "0" ]
    		then
    		echo "NUMBER IS GREATER THAN ZERO"
    	else
    		echo "NUMBER IS LESS THAN ZERO"
    	fi
    fi
    
  3. if条件下使用test命令,用于检查某个条件是否成立,其功能与方括号[]类似

    #!/bin/bash
    read NUM
    if test "$((NUM%2))" -eq "1"
    then
    	echo "the number is an odd number"
    else
    	echo "the number is a even number"
    fi
    

6.3循环结构化命令

6.3.1使用for

  1. 列表for循环

    #!/bin/bash
    sum=0
    for i in {
          
          2..200..2}
    do
    	sum=$(($sum+i))
    done
    echo "sum=$sum"
    
    #!/bin/bash
    for file in $(ls -lt|awk '{print $9}')	# 结合管道使用
    do
    	echo "file: $file"
    done
    
  2. 不带列表for循环

    #!/bin/bash
    for 条件
    do
    	语句
    done
    
  3. 类C风格for循环

    #!/bin/bash
    sum=0
    for((i=2;i<=200;i=i+2))
    do
    	let "sum = sum + i"
    done
    echo "The Sum is:"$sum
    

6.3.2使用while

#!/bin/bash
num=1
while [ $num -le 10 ] # []两侧一定要有空格,否则不能运行
do
	echo $num
	num=$(($num+1))
done
#!/bin/bash
read i
while [ $i -lt 101 ] && [ $i -gt 0 ]
do
	if [ $i -eq 29 ]
		then
		echo "you are right"
		exit 0
	elif [ $i -lt 29 ]
		then
		echo "you should try a bigger one"
	else
		echo "you should try a smaller one"
	fi
	read i
done

6.3.3使用until,即do-while

#!/bin/bash
num=1
until ((num>10))	# 符合条件才退出循环
do
	echo $num
	((num++))		# 或者:num=$(($num+1))
done

6.3.4使用break和continue

  1. break

    #!/bin/bash
    i=25
    while [ $i -gt 0 ]
    do
    	echo $i
    	((i++))
    	if [ $i -eq 29 ]
    	then
    		echo $i
    		echo "you are right"
    		break
    	fi
    done
    
  2. continue

    #!/bin/bash
    i=25
    while [ $i -lt 31 ] && [ $i -gt 0 ]
    do
    	((i++))
    	if [ $i -eq 29 ]
    		then
    		continue
    	fi
    	echo $i
    done
    

2020年12月16日更

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


猜你喜欢

转载自blog.csdn.net/CrazyMooo/article/details/111303542