文章目录


SHELL编程入门

Linux系统分层如下:用户层、应用层、Shell层、内核层、硬件层

Shell是一个用c语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言

Shell是指一种应用程序,这个程序提供了一个界面,用户通过这个界面访问操作系统的内核服务

Shell编程基础

我们可以使用任意一种文本编辑器编写Shell脚本(vi、gedit等),但是它必须以以下内容开始:

#!/bin/bash(推荐使用)

#!是特殊符号,用来表示shell脚本程序

变量赋值和引用

在Shell编程中,使用变量无需事先声明,同时变量的命令规则如下:


  • 首个字符必须为字母
  • 中间不能有空格,但是可以用‘_’
  • 不能使用标点
  • 不能使用bash关键字

变量赋值语法:变量名=值(不能有空格)

变量的引用:’$’,示例如下:

#!/bin/bash
a="Hello World"
echo "a is:" $a

有时变量名和文本会混淆,可以使用{变量名},以区别变量和文本

num=1
echo "This is the $numnd" #num nd两个会出现混淆
#应更改为
echo "This is the ${num}nd"

shell默认赋值类型为字符串

Shell流程控制

if语句

“if”表达式如果条件为真,就会执行then后的部分:

if ...;then
...
elif...;then
...
else
...
fi

如果进行条件判断,需要使用"[ ]"(if后有空格,且判断语句也需要带上空格)

#!/bin/bash
if [ ${SHELL} = "/bin/bash" ]; then
echo "OK"
fi

case语句

case表达式可以用来匹配一个给定的字符串,而不是数字

case ... in
...)
do something here ;;
...)
do something here ;;
esac

程序实例如下:

#!/bin/bash
case $1 in
"1")
echo "This is 1" ;;
"2")
echo "This is 2" ;;
esac

*注意: 1 是 特 殊 符 号 , 代 表 传 递 给 该 脚 本 的 第 一 个 参 数 值 , 类 似 于 c 中 的 a r g v [ 1 ] , 而 1是特殊符号,代表传递给该脚本的第一个参数值,类似于c中的argv[1],而 1是特殊符号,代表传递给该脚本的第一个参数值,类似于c中的argv[1],而表示所有参数

select语句

select表达式是bash中的一种拓展应用,擅长于交互式场景,用户可以在一组值中进行选择

select var in ...;do
break;
done
...now $var can be used...

select实例如下:

#!/bin/bash
echo "What's your select?"
select var in "A.---" "B.----" "C.----" "D.----";do
break;
done
echo "Your select is ${var}"

注意:每个选项之间有空格

while/for循环

while循环

while...;do
...
done

for循环

for var in ...;do
...
done

for循环实例:

#!/bin/bash

for var in a b c ; do
echo "$var"
done

脚本运行将会输出a、b、c

Shell中的特殊符号


  • “”可以防止变量名代替字符串,‘’则更加严格
    ​echo $SHELL echo "$SHELL" echo '$SHELL' #程序运行结果如下: /bin/bash /bin/bash $SHELL ​
  • Here Document
    当需要将几行文本信息传递给一个命令时,就可以使用Here Document
    ​command << text **** **** text(顶格写) ​​例如:
    ​#!/bin/bash cat << text 1111111 2222222 3333333 text ​​脚本运行之后将输出两个text中间的内容

Shell函数

函数定义

function function_name()
{
...
}

#函数调用
function_name

函数使用实例如下:

#!/bin/bash

function hello()
{
echo "Hello World"
}

hello