Linux shell 脚本基础与实践指南

一、shell 脚本入门

1.1 什么是 shell 脚本

shell 脚本是包含一系列 Linux 命令的文本文件,可批量执行命令,实现自动化操作。其核心价值在于整合多个命令,按顺序执行并处理结果。

1.2 多命令执行方式

  • 分号分隔:依次执行多个命令,前一个命令不影响后一个。
    示例:date ; who(先显示日期,再显示登录用户)。
  • 管道符连接:将前一个命令的输出作为后一个命令的输入(仅显示最终结果)。
    示例:ps aux | grep bash(筛选包含 bash 的进程)。

二、创建与执行 shell 脚本

2.1 脚本文件格式

  1. 创建文件:使用vim 脚本名.sh(如vim test.sh)。
  2. 首行声明:必须以#!/bin/bash开头,指定脚本解释器为 bash。
  3. 添加命令:在后续行写入需要执行的 Linux 命令。
    示例脚本(test.sh):

2.2 执行脚本的两种方法

(1)通过 bash 命令执行

无需执行权限,直接调用 bash 解释器:

(2)直接执行脚本(需权限)
  1. 赋予可执行权限:chmod u+x test.sh(仅当前用户可执行)。
  2. 通过路径执行:
    • 相对路径:./test.sh(当前目录下)。
    • 绝对路径:/home/zhang/test.sh(全路径)。

三、脚本中的输出与变量

3.1 echo 命令输出文本

  • 基本用法:echo "文本内容"(自动换行)。
  • 取消换行:echo -n "文本内容"(后续输出与当前行衔接)。
    示例:

3.2 变量的使用

(1)系统环境变量

直接引用系统预设变量(需加$),常用变量:

  • $USER:当前用户名。
  • $UID:当前用户 ID。
  • $HOME:当前用户主目录。

示例脚本(var_test.sh):

(2)用户自定义变量
  • 定义规则:变量名=值(等号前后无空格,区分大小写)。
  • 引用变量:$变量名
  • 作用范围:仅在当前脚本中有效,退出脚本后失效。

示例:

(3)命令输出赋值给变量

将命令的执行结果存储到变量,两种方式:

  1. 反引号:变量名=命令(如`today=`date +%Y%m%d)。
  2. $()格式:变量名=$(命令)(推荐,可读性更好)。

示例(获取当前日期并生成日志文件):

四、文本行数统计:wc 命令

  • 功能:统计文本的行数、词数、字节数。
  • 常用参数
    • -l:仅统计行数。
    • 通配符*:统计所有文件。

示例:

五、脚本中的数学运算

5.1 整数运算

(1)expr 命令

需注意运算符前后加空格,特殊符号(如*)需转义(\*)。
示例:

(2)与(()) 格式

推荐用法,无需空格和转义,支持变量运算。
示例:

5.2 浮点运算(bc 工具)

bash 默认不支持小数运算,需使用bc工具(通过管道符调用)。

  • 基本格式:变量=$(echo "scale=小数位数; 运算式" | bc)
    示例:

六、脚本的退出状态码

  • 每个命令执行后会返回退出状态码(0~255),$?变量存储最后一个命令的状态码。
  • 状态码含义:
    • 0:命令执行成功。
    • 非 0:执行失败(如127表示命令不存在)。

七、实践练习题(附脚本示例)

练习 1:基础脚本编写

创建脚本info.sh,输出当前时间、登录用户及系统变量。

练习 2:变量与命令输出

创建脚本log.sh,将/usr/bin目录的文件列表写入带日期的日志文件,并统计行数。

练习 3:数学运算

创建脚本c

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值