Linux之shell编程

前言

Shell 相比 C 语言的优势在于它是完全嵌入在 Linux 中的,不需要安装,不需要编译,同时shell可以“内嵌”所有的Linux命令,所以在Linux环境下使用shell编程是极为方便的!介绍shell相关的背景知识不是本篇博客的目的,感兴趣的朋友可以参考Linux探索之旅 | 第五部分第二课

Shell基础


1.开头要加#!/bin/bash(必不可少),表示以bash Shell运行程序,bash用的比较多,当然还有其他的Shell,如sh,ksh等

2.执行脚本时需要注意该脚本是否有可执行的权限,如果没有,需要加上可执行权限(chmod +x 文件名)

3.以调试模式运行:bash -x test.sh

4.声明变量:message='Hello World'在 bash 中,所有的变量都是字符串!

5.echo : 显示内容,echo "Hello World"echo $messageecho "The message is $message"

6.read : 请求输入
用法1:请求用户输入,并打印在屏幕上

read name
echo "Hello $name !"

用法2:指示用户按提示输入,并打印在屏幕上

read -p 'Please enter your name : ' name
echo "Hello $name !"

用法3:限制字符数目

read -p 'Please enter your name (5 characters max) : ' -n 5 name
echo -e "\nHello $name !"

用法4:限制输入时间

read -p 'Please enter the code to defuse the bomb (you have 5 seconds) : ' -t 5 code
echo -e "\nBoom !"

用法5:隐藏输入内容

read -p 'Please enter your password : ' -s password
echo -e "\nThanks, I will tell everyone that your password is $password"

7.Shell 脚本也可以接收参数

./variable.sh 参数1 参数2 参数3

$# :包含参数的数目。
$0 :包含被运行的脚本的名称 。
$1:包含第一个参数。
$2:包含第二个参数。

8.数组

array=('value0' 'value1' 'value2')
echo ${array[2]} #访问数组第三个元素,下标从0开始
echo ${array[*]} #一次性显示数组中所有的元素值

9.条件语句
用法1:

if [ 条件测试 1 ]
then
    做 1 的事情
elif [ 条件测试 2 ]
then
    做 2 的事情
elif [ 条件测试 3 ]
then
    做 3 的事情
else
    做其他事情
fi

在 bash 中可以做三种条件测试
测试字符串
Linux之shell编程_第1张图片
测试数字
Linux之shell编程_第2张图片
测试文件
Linux之shell编程_第3张图片
用法2:

case $1 in
    "dog" | "cat" | "pig")
        echo "It is a mammal"
        ;;
    "pigeon" | "swallow")
        echo "It is a bird"
        ;;
    *)
        echo "I do not know what it is"
        ;;
esac

case $1 in :$1 表示我们要测试的变量是输入的第一个参数。
"dog" | "cat" | "pig") :测试其中一个 case,也就是 $1 是否等于"dog" | “cat” | "pig"其中的一个,“|”表示“或”。
;; :类似于主流编程语言中的 break; ,表示结束 case 的读取,程序跳转到 esac 后面执行。
*) :相当于 if 条件语句的 else。
esac :是 case 的反写,表示 case 语句的结束。

10.循环
用法1:循环直到条件测试为假

while [ 条件测试 ]
do
    做某些事
done

用法2:循环直到条件测试为真

until [ 条件测试 ]
do
    做某些事
done

用法3:

for 变量 in '值1' '值2' '值3' ... '值n'
do
    做某些事
done

for i in `seq 1 2 10` #循环打印1-10的数字,间隔为2
do
    echo $i
done

11.函数
申明的变量默认是全局变量,要申明局部变量,需要在变量名前加local

函数名 () {
    函数体
}

Linux之shell编程_第4张图片

总结


以上是Shell编程的一些基本的用法,包括变量申明,条件语句,循环语句,函数的编写格式,参考Linux探索之旅

你可能感兴趣的:(Linux学习笔记)