11-Shell脚本编写-学习

Shell 脚本编写

在Linux系统中,Shell脚本是一种强大的编程工具,可以执行许多任务。Shell脚本是一种文本文件,其中包含一系列命令,可以在命令行或脚本文件中运行。

一、什么是Shell脚本?

Shell脚本是一个简单的程序,由一系列命令组成,并由Shell解释器来执行这些命令。Shell解释器是一种命令行界面,可通过与用户交互来执行命令。

Shell脚本通常用于自动化任务,例如批处理文件、日志备份和软件安装等。Shell脚本还可以用于编写其他脚本,例如Python和Perl脚本。

Shell脚本使用标准输出和错误输出来显示结果。可以将脚本的输出重定向到文件或管道中,以便进一步处理。

二、Shell脚本基础知识

1. Shell解释器

Shell解释器是指Shell程序的主体,它负责执行脚本中的命令。常见的Shell解释器有bashsh等。默认情况下,大多数Linux操作系统都使用bash作为默认Shell。

2. Shell脚本文件

Shell脚本文件是一个文本文件,其中包含一些命令和注释。Shell脚本文件通常以.sh扩展名结尾。要运行Shell脚本,必须将其设置为可执行,即运行以下命令:

chmod +x script_name.sh

这将使脚本文件具有可执行权限。

三、Shell脚本基本使用

Shell脚本通常由以下几个部分组成:

1. 首行的 #!

#! 出现在Shell脚本中的第一行,用于指定Shell解释器。例如,使用bash解释器的Shebang如下所示:

#!/bin/bash
2. 变量

变量在Shell脚本中用于存储值,可以在脚本中多次引用。在Shell脚本中,变量名通常使用大写字母。例如,定义一个名为MY_VAR的变量:

MY_VAR="Hello World"

要使用一个已定义的变量,只需在变量名前面加$符号,变量名外面的{}是可选的:

${MY_VAR}
$MY_VAR
3. 函数

Shell脚本中的函数是一系列命令的集合,可以多次引用。定义函数的语法如下所示:

function_name() {
    command1
    command2
    ...
}

例如,定义一个名为hello_world()的函数:

hello_world() {
    echo "Hello World"
}
4. 数组

Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。与大部分编程语言类似,数组元素的下标由 0 开始。

Shell 数组用括号[]来表示,元素用"空格"符号分割开,语法格式如下:

array_name=(value1 value2 ...)
  • 创建数组:
my_array=(A B "C" D)
或:`在这里插入代码片`
arr_test[0]=value0
arr_test[1]=value1
arr_test[2]=value2
  • 读取数组的值:
# 语法
${array_name[index]}
# 示例
${my_array[1]}
  • 关联数组
    Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
    关联数组使用 declare 命令来声明,语法格式如下:
declare -A array_name

-A 选项就是用于声明一个关联数组。
关联数组的是唯一的。

# 示例
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
5. echo 命令

Shell 的 echo 指令用于字符串的输出:

# 显示普通字符串,输出 Hello World
echo "Hello World"
# 显示转义字符,输出 "Hello World"
echo "\"Hello World\""
6. test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值字符文件三个方面的测试。

# 比较数值
num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

# 比较字符串
num3="ru1noob"
num4="runoob"
if test $num3 = $num4
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

# 比较文件
cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi
7. 控制流语句

控制流语句可用于Shell脚本中的条件测试和循环。下面是一些常见的控制流语句:

if语句

if语句用于测试一个或多个条件,并根据测试结果执行不同的操作。例如,以下if语句将根据变量MY_VAR的值输出不同的消息:

if [[ $MY_VAR == "Hello" ]]; then
    echo "MY_VAR is Hello."
else
    echo "MY_VAR is not Hello."
fi
for循环

for循环用于迭代遍历一个列表或范围。例如,以下for循环将输出数字1到10:

for i in {1..10}; do
    echo $i
done
while循环

while循环用于在条件为真时重复执行命令。例如,以下while循环将输出数字1到10:

i=1
while [[ $i -le 10 ]]; do
    echo $i
    ((i++))
done

四、Shell脚本实例

下面是一个简单的Shell脚本示例,该脚本将打印当前日期和时间:

#!/bin/bash

CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "Current Time : $CURRENT_TIME"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值