此笔记由个人整理
塞上苍鹰_fly
课程来自:正点原子_手把手教你学Linux
一、shell脚本简介
- shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件
- shell脚本提供数组、循环、条件判断的等功能
- shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握shell脚本最基础的部分即可
二、shell脚本写法
- shell脚本是个纯文本文件,命令从上到下,一行一行的开始执行。
- shell脚本扩展名为.sh,shell脚本的第一行固定为
#!/bin/bash
- 表示使用bash
三、shell脚本语法
第一个shell脚本
#!/bin/bash
echo "hello world!!"
- 结果
交互式shell脚本
#!/bin/bash
echo "please input name"
read name
echo "your name:$name"
- 结果
数值计算shell脚本
- shell仅支持整形,数值计算使用$((表达式))
#!/bin/bash
echo "please input two number"
read -p "firstnum" first
read -p "secondnum" second
tatol = $(($first+$second))
echo "$first + $second = $tatol"
- 结果
shell脚本test命令
- test命令用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试
- 查看文件是否存在
#!/bin/bash
echo "please input file name"
read -p "file name:" filename
test -e $filename && echo "$filename exist" || echo "$filename no exist"
- 结果
- 查看字符串是否相等
#!/bin/bash
echo "please input two string"
read -p "first:" first
read -p "second:" second
test $first == $second && echo "firststr = secondstr" || echo "firststr != secondstr"
- 结果
中括号[]判断符
- 查看字符串是否相等
#!/bin/bash
echo "please input two number"
read -p "first:" first
[ "$first" == "$second" ] && echo "first = second" || echo "first != second"
- 结果
默认变量
- $0:shlle脚本命令本身
- $#:#表示最后一个参数的标号。
- $@:表$1、$2、$3…
#!/bin/bash
echo "filename:" $0
echo "total param num:" $#
echo "whole param:" $@
echo "first param:" $1
echo "second param:" $2
- 结果
四、shell脚本选择、函数与循环
选择
- if-else格式
if 条件判断 ; then
//条件判断成立要做的事情
elif 条件判断 ; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
- 判断输入内容
#!/bin/bash
read -p "please input[Y/N]:" value
if [ "$value" == "Y" ] || [ "$value" == "y" ]; then
echo "you input is y"
exit 0
elif [ "$value" == "N" ] || [ "$value" == "N" ]; then
echo "you input is n"
exit 0
else
echo "you input is error"
exit 0
fi
- 结果
- case格式
case $变量 in
“第1个变量内容”)
程序段;; //表示该程序块结束!!
“第2个变量内容”)
程序段;;
“第n个变量内容”)
程序段;;
esac
- 判断输入内容
#!/bin/bash
case $1 in
"a")
echo "you input is a";;
"b")
echo "you input is b";;
*)
echo "error";;
esac
- 结果
函数
- 格式
function fname() {
//函数代码段
}
- 简单函数调用
#!/bin/bash
function help(){
echo "this is help cmd"
}
function close(){
echo "this is close cmd"
}
case $1 in
"-h")
help;;
"-c")
close;;
esac
- 结果
- 函数传参
#!/bin/bash
printf(){
echo "param 1: $1"
echo "param 2: $2"
}
print a,b
- 结果
循环
- while循环格式
while [条件] //括号内的状态是判断式
do //循环开始
//循环代码段
done
- 简单循环
#!/bin/bash
while [ "$value" == "close" ]
do
read -p "please input str: " value
done
echo "stop while"
- 结果
- for循环格式
for((初始值; 限制值; 执行步长))
do
//循环代码段
done
- 累加
#!/bin/bash
read -p "please input value: " value
total = 0
for((i=0;i<$value;i++))
do
total=$(($total+$i))
done
echo "1+2+3+4....+$value=$total"
- 结果