Linux下编写第一个bash脚本

编写一个 Bash 脚本是很简单的,下面是一个简单的指南和示例,帮助你入门。

Bash 脚本基础

  1. 脚本文件扩展名 :虽然不强制要求,一般 Bash 脚本以 .sh 作为文件扩展名。
  2. 脚本的起始行 :每个 Bash 脚本的第一行通常是 #!/bin/bash#!/usr/bin/env bash,用于指定脚本的解释器。
  3. 权限 :确保脚本具有可执行权限,可以使用 chmod +x script.sh 命令来设置。

示例:创建一个 Bash 脚本

1. 创建脚本文件

在终端中使用文本编辑器(如 nanovim)创建一个脚本文件。例如,使用 nano 创建一个名为 hello.sh 的文件:

复制代码
nano hello.sh
2. 编辑脚本

在文件中输入以下内容:

复制代码
#!/bin/bash

# 输出Hello, World!
echo "Hello, World!"

# 定义一个变量
name="Alice"

# 使用变量
echo "Hello, $name!"

# 判断条件
if [ "$name" == "Alice" ]; then
    echo "Welcome, Alice!"
else
    echo "Who are you?"
fi

# 循环示例
for i in {1..5}; do
    echo "Count: $i"
done
3. 保存和退出

nano 中,你可以按 CTRL + O 保存,然后按 Enter 退出,再按 CTRL + X 退出编辑器。

4. 赋予执行权限

在终端中输入以下命令赋予脚本可执行权限:

复制代码
chmod +x hello.sh
5. 运行脚本

运行脚本可以使用以下命令:

复制代码
./hello.sh

运行结果

执行该脚本后,你会看到如下输出:

复制代码
Hello, World!
Hello, Alice!
Welcome, Alice!
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5

其他提示

  • 输入参数 :可以通过 $1$2 等变量接收输入参数,例如:

    复制代码
    #!/bin/bash
    echo "Hello, $1!"

    执行时使用 ./hello.sh Bob,输出将为 Hello, Bob!

  • 函数:可以定义函数来组织代码:

    复制代码
    function greet {
        echo "Hello, $1!"
    }
    
    greet "Alice"
  • 错误处理 :使用 $? 检查上一个命令的返回值:

    复制代码
    ls /nonexistentfile
    if [ $? -ne 0 ]; then
        echo "Error: File not found!"
    fi

总结

Bash 脚本是一个强大的自动化工具,可以用于执行各种任务。通过学习基础语法、变量、条件判断和循环结构,你可以逐步编写出复杂的脚本以满足不同需求。继续尝试和探索更多 Bash 的功能是提高技能的好方法!

除了 Bash,许多其他的 shell 也可以用来编写脚本。以下是一些常见的 shell 及其基本示例,包括 Zsh 和 Fish shell。不同的 shell 有不同的语法和功能,但大多数基本操作是类似的。

不同的 shell 在语法和功能上各有特点,但它们都可以用于编写脚本。选择哪种 shell 编写脚本主要取决于你的个人喜好和具体需求。

  • Bash:最常见,适合大多数脚本需求。
  • Zsh:功能强大,支持很多 Bash 的功能,还增加了额外的提示和自动补全功能。
  • Fish:注重用户体验,语法简洁明了。
  • Ksh:性能优越,适用于需要高效处理的场合。

更改默认 shell

使用 chsh 命令

chsh 命令可以用来更改用户的默认 shell。以下是具体步骤:

  1. 选择目标 shell :确定要使用的 shell,例如 Zsh (/bin/zsh) 或 Fish (/usr/bin/fish)。

  2. 使用 chsh 修改默认 shell

    复制代码
    chsh -s /bin/zsh

    或者

    复制代码
    chsh -s /usr/bin/fish

    注意:你需要提供 shell 的完整路径。

  3. 输入密码 :运行 chsh 命令后,系统会提示你输入当前用户的密码。

3. 验证更改

完成上述步骤后,重新启动终端或注销并重新登录,验证默认 shell 是否已更改:

复制代码
echo $SHELL

此时,输出应为新的默认 shell 路径。

4. 全局更改(适用于系统管理员)

如果你想为系统中的所有用户更改默认 shell,可以通过修改 /etc/passwd 文件来实现。但这种操作需要系统管理员权限,并且对系统的安全性有影响,因此请谨慎操作。

示例:更改 /etc/passwd 文件
  1. 使用 sudo 权限编辑 /etc/passwd 文件:

    复制代码
    sudo nano /etc/passwd
  2. 找到需要更改的用户条目,将其默认 shell 部分修改为你想要的 shell 路径。例如,将 bash 更改为 zsh

    复制代码
    username:x:1000:1000:User Name,,,:/home/username:/bin/bash

    改为:

    复制代码
    username:x:1000:1000:User Name,,,:/home/username:/bin/zsh
  3. 保存文件并退出编辑器。

  4. 验证更改:重新登录用户,确认默认 shell 已更改。

相关推荐
阿里嘎多学长22 分钟前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
weixin_307779132 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949652 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
边境悍匪4 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
我的xiaodoujiao4 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django
菜鸟~noob2334 小时前
【太空电子战】从CCS到Meadowlands:反通信系统的二十年演进史【含matlab代码】
开发语言·matlab
quantdash_cc5 小时前
量化策略为什么需要实时行情数据?从信号产生到交易决策的时间差说起
开发语言·python·数据分析·量化交易·股票数据·quantdash
逆向编程7 小时前
QGIS地图投影(CRS坐标参照系)设置
开发语言
free-elcmacom7 小时前
发际线警告!手撕《C陷阱与缺陷》终极 BOSS:signal 函数与 typedef 魔法
c语言·开发语言·visual studio code·visual studio
程序员阿鹏7 小时前
简单介绍一下软引用
java·开发语言·jvm·数据结构·后端