00234 Shell脚本入门笔记


前言

一个简单的 Bash 脚本通常以 #!/bin/bash 开始,称为 shebang 行,指示系统使用 Bash 解释器来运行脚本。

#!/bin/bash
# 这是一个简单的 Bash 脚本

echo "Hello, World!"

保存文件,例如 script.sh,然后给予执行权限并运行:

chmod +x script.sh
./script.sh

Operating System: Ubuntu 22.04.4 LTS

基本概念

  • Shell 脚本:一系列命令的集合,保存在文件中,可被 shell 解释器执行。
  • Shebang:脚本第一行,指定解释器,如 #!/bin/bash

变量

  • 声明变量:直接赋值,无需类型声明。

    var="Hello, World!"
  • 输出变量

    echo $var
  • 读取用户输入

    read input

输出

  • echo 命令:输出文本到终端。

    echo "Hello, World!"

条件判断

  • if 语句

    if [ "$var" == "hello" ]; then
        echo "Match!"
    else
        echo "No match."
    fi
  • 比较运算符

    • 字符串比较:==, !=
    • 数值比较:-eq, -ne, -lt, -le, -gt, -ge

循环

  • for 循环

    for i in 1 2 3 4 5
    do
        echo "Number $i"
    done
  • while 循环

    count=0
    while [ $count -lt 5 ]
    do
        echo "Count is $count"
        count=$((count+1))
    done

函数

  • 定义函数

    my_func() {
        echo "This is a function."
    }
  • 调用函数

    my_func

脚本执行

  • 赋予执行权限

    chmod +x script.sh
  • 运行脚本

    ./script.sh

常用命令

  • **grep**:文本搜索。
  • **sed**:流编辑器。
  • **awk**:文本处理工具。

错误处理

  • 退出脚本

    exit 1
  • 严格模式

    set -e

文件操作

  • 检查文件存在

    if [ -e "file.txt" ]; then
        echo "File exists."
    fi
  • 遍历目录

    for file in /path/*; do
        echo $file
    done

正则表达式

  • 基本用法

    if [[ $var =~ ^hello ]]; then
        echo "Matches pattern."
    fi

位置参数

Bash 脚本可以接收命令行参数,称为位置参数,用 $1, $2, 等表示。

#!/bin/bash
# 接收参数并输出

echo "第一个参数是: $1"
echo "第二个参数是: $2"

运行时传入参数:

./script.sh arg1 arg2

设置参数默认值

有时我们希望在用户没有提供参数时,使用默认值。可以通过以下几种方式实现。

使用 if 语句检查参数

#!/bin/bash

if [ -z "$1" ]; then
    PARAM="default_value"
else
    PARAM="$1"
fi

echo "使用参数: $PARAM"

使用变量扩展 ${variable:-default}

#!/bin/bash

PARAM=${1:-default_value}

echo "使用参数: $PARAM"

${1:-default_value} 意味着如果 $1 未设置或为空,则使用 default_value

示例:带默认值的脚本

#!/bin/bash

# 设置默认值
NAME=${1:-"World"}

echo "Hello, $NAME!"

运行脚本时,可以传入参数或不传:

./script.sh          # 输出: Hello, World!
./script.sh Alice    # 输出: Hello, Alice!

其他常用变量

  • $0:脚本名称。
  • $#:参数个数。
  • $@:所有参数,作为单独的字符串。
  • $*:所有参数,作为单个字符串。

示例:

#!/bin/bash

echo "脚本名: $0"
echo "参数个数: $#"
echo "所有参数: $@"

运行:

./script.sh arg1 arg2
# 输出:
# 脚本名: ./script.sh
# 参数个数: 2
# 所有参数: arg1 arg2

循环处理参数

可以使用 for 循环遍历所有参数。

#!/bin/bash

for arg in "$@"
do
    echo "参数: $arg"
done

运行:

./script.sh apple banana cherry
# 输出:
# 参数: apple
# 参数: banana
# 参数: cherry

实践建议

  • 多写小脚本练习。
  • 查阅手册(man)了解命令详细用法。
  • 使用 set -x 调试脚本。

总结

通过这些基础内容,你可以开始编写简单的 Bash 脚本,并处理命令行参数及其默认值。随着经验的积累,可以探索更多高级功能,如条件判断、循环、函数等。

结语

第二百三十四篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录