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 已更改。

相关推荐
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
Yana.nice5 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
码智社5 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海5 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖6 小时前
JDK 26 新特性详解
java·开发语言
马优晨6 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区8 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大9 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai9 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜9 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript