Bash 是一个强大的脚本工具,运行在类 Unix 系统上,比如 Linux 和 macOS。它是一个多功能工具,用于自动化任务、管理文件和系统交互。
基础知识:Shell 脚本: 包含一系列 Bash 命令的文本文件。
Shebang: 脚本中的首行指示符,指示使用的解释器(例如,#!/bin/bash)。
运行: 使脚本可执行(chmod +x script.sh),然后运行它(./script.sh)。
一些重要的命令
回显: 在终端输出文本。
获取用户输入: 从用户获取输入。
if-else: 条件语句。
for: 用于遍历项目列表。
while: 只要条件为真就一直循环。
case: 根据值匹配模式。
函数: 可重复使用的代码块。
变量是指可以改变的数据值。这里我们讲的是变量。
声明语句: variable_name=value
用法示例: echo $variable_name
类型示例: 字符串类型, 整数类型, 浮点数类型。
文件管理
创建文件: touch 文件名
删除文件: rm 文件名
复制文件: cp 源文件 目标文件
移动文件: mv 源文件 目标文件
列出文件: ls
进入文件夹: cd 文件夹名
输入和输出
阅读: 读取变量值
写入: echo 命令 "文本" > 文件名:
追加: echo 命令 "文本" >> 文件名:
算术运算
基础: expr 2 + 3
Shell 算术: (( 结果 = 2 + 3 ))
如果...那么...
Bash
if [ 条件表达式 ]; then
执行的命令
elif [ 条件表达式 ]; then
执行的命令
else
执行的命令
fi
进入全屏模式,退出全屏模式
for循环(例如):
Bash
for 变量名 in 列表; do
命令
done
# 循环变量名的列表
全屏模式:退出
while 循环:
Bash
while [ 条件成立 ]; 执行
执行 命令
直到条件不成立时停止重复执行
点击全屏按钮 退出全屏模式
案例:
Bash
case 变量名 in
模式一)
命令... ;;
模式二)
命令... ;;
其他)
命令... ;;
esac
进入全屏 退出全屏
功能定义如下:
在 Bash 中,函数定义如下:
function 函数名() {
命令
}
下面是一个简单的 Bash 函数定义示例。
全屏, 退出全屏
调用: function_name
例子大家好,
Bash
#!/bin/bash
echo "Hello, World!" # 输出 "Hello, World!"
全屏模式 退出全屏
简易计算器:
Bash
#!/bin/bash
echo "请输入两个数字:"
read num1 num2
result=$((num1 + num2))
echo "结果是: $result"
切换到全屏模式 退出全屏
正则表达式,也就是用来匹配字符串模式的表达式模式匹配: 常用于复杂字符串的匹配和搜索。
语法: grep 'pattern' 文件(在文件中)
示例: 查找含有电子邮件地址的行:grep '[[:alnum:]]+@[[:alnum:]]+.[[:alnum:]]+' 文件
这里的正则表达式用于匹配常见的电子邮件格式。
管道: 把一个命令的输出连到下一个命令的输入。
示例: 列出文件,按文件大小排序,并输出前10个:ls -l | sort -n -k 5 | head -n 10
重定向:
">": 覆盖输出。
">>": 追加输出。
"<": 输入重定向。
在表达式中执行命令: 命令或 $(命令)
示例: 将变量设置为当前日期: current_date=$(date),其中“date”可以翻译为“当前日期”,例如:“current_date=$(当前日期)”。不过,考虑到这是一个示例,保留英文“date”也是可以接受的。
声明: array_name=(element1 element2)
访问: echo ${array_name[index]}
示例: 创建一个水果列表: fruits=("苹果" "香蕉" "橙子")
传递参数: function_name 参数1 和 参数2
访问这些参数: $1, $2, ...
例如:
Bash
function greet() {
# 定义一个问候函数
echo "输出 'Hello, [name]!'" # 输出 'Hello, $1!'
# 其中 $1 是传递给函数的第一个参数
}
# 用 'John' 作为参数调用 greet 函数
greet John
全屏,退出全屏
条件语句括号测试: [条件] 或 [[条件]]
操作符: -f (文件), -d (目录), -x (可执行文件), -z (空文件), -n (非空文件), =, !=, <, >, -eq, -ne, -lt, -le, -gt, -ge
示例用法: 检查文件是否存在: if [ -f file.txt ]; then ...(这里的file.txt保持英文原样)
跟踪: set -x
错误处理: 如果 [$? -ne 0]; 那么...
写入日志: 将 "Message" 写入 logfile
可读性: 使用有意义的变量名和注释来提高代码的清晰度。
错误处理: 预期并处理可能的错误,给出详细的错误信息。
模块化: 将复杂的脚本拆分成更小的函数,便于管理和维护。
效率: 优化脚本以提升性能。
多行文本输入: 脚本中的多行输入。
Getopts: 用来解析命令行中的选项。
处理信号: 响应中断和信号。
在后台运行任务: 在后台运行命令。
定制 Bash 的行为: 比如“set -e 可以用来启用严格的错误检查”。
共同学习,写下你的评论
评论加载中...
作者其他优质文章