编写shell脚本
基本命令#
命令 | 说明 |
---|---|
ls | 列出目录中的文件和子目录。 |
cd | 切换当前工作目录。 |
pwd | 显示当前工作目录的路径。 |
mkdir | 创建新目录。 |
rm | 删除文件或目录。 |
cp | 复制文件或目录。 |
mv | 移动文件或目录。 |
touch | 创建空文件或更新文件的时间戳。 |
cat | 连接文件并打印到标准输出。 |
grep | 在文件中搜索指定模式。 |
awk | 用于处理文本文件的命令语言。 |
sed | 流式文本编辑器,用于过滤和转换文本。 |
echo | 在标准输出上打印文本。 |
chmod | 更改文件或目录的权限。 |
chown | 更改文件或目录的所有者。 |
ps | 显示当前运行的进程。 |
top | 实时显示系统中的进程信息。 |
kill | 终止进程。 |
ifconfig / ip | 显示和配置网络接口。 |
ping | 向主机发送 ICMP 回显请求。 |
traceroute / tracert | 显示数据包传输路径。 |
ssh | 安全地远程登录到另一台计算机。 |
scp | 在本地主机和远程主机之间安全地复制文件。 |
tar | 压缩和解压缩文件。 |
gzip / gunzip | 压缩和解压缩文件。 |
read | 读取输入到一个变量 |
date | 输出日期时间 |
whoami | 打印当前用户 |
脚本示例#
#!/bin/bash
# 定义函数来生成消息
generate_message() {
local name=$1
local age=$2
if [ $age -le 18 ]; then
echo "嗨,$name。您是年轻的!"
else
echo "您好,$name。您已经是成年人了!"
fi
}
# 提示用户输入姓名
echo "请输入您的姓名:"
read name
# 提示用户输入年龄
echo "请输入您的年龄:"
read age
# 调用函数生成消息
generate_message "$name" "$age"
# 使用for循环演示多次调用函数
for i in {1..3}; do
echo "请输入第 $i 个人的姓名:"
read name
echo "请输入第 $i 个人的年龄:"
read age
# 调用函数生成消息
generate_message "$name" "$age"
done
shell脚本中也有变量,函数,条件分支和循环等。首先generate_name()
就是定义了一个函数,内部使用local
来声明一个局部变量,$1
表示第一个入参,$2
表示第二个入参。
条件分支使用if
开启,使用fi
结束,条件语句要放到方括号中,并且前后必须要空格隔开,-le
表示小于等于,还有其他的大于等于-ge
,等于-eq
等。
for i in{1..3};
是一种迭代的写法,表示i依次取1,2,3,然后do
开启循环内部逻辑块,然后通过done结束循环。还可以使用
for ((initialization; condition; increment )); do
# ...
done
这种形式,类似于高级语言中的for循环。
这个demo脚本的功能就是读取三次输入的名称和年龄,然后调用函数判断是否年龄大于18了。
环境变量#
可以使用export
命令给当前终端添加环境变量。
export $name=zhangsan
如果想要永久保存,可以在.bashrc或者.profile文件中添加export
命令来添加环境变量。
猜数字游戏脚本示例:#
#!/bin/bash
# 生成一个1到100之间的随机数
number=$((RANDOM % 100 + 1))
echo "欢迎参加猜数字游戏!"
echo "我已经选择了一个1到100之间的数字。"
# 循环提示用户猜数字,直到猜对为止
while true; do
echo "请输入您猜测的数字:"
read guess
# 检查用户输入是否是数字
if ! [[ "$guess" =~ ^[0-9]+$ ]]; then
echo "请输入一个有效的数字。"
continue
fi
# 检查用户猜测的数字与目标数字的大小关系
if [ "$guess" -lt "$number" ]; then
echo "太小了,请再试一次。"
elif [ "$guess" -gt "$number" ]; then
echo "太大了,请再试一次。"
else
echo "恭喜!您猜对了!"
break
fi
done
大部分都是上面提到过的了,不过还有一个number的赋值的这个用法我们没见过。$()
用来执行命令替换,小括号里面的是要执行的命令,然后将命令执行的结果返回出来,这里就是生成一个1到100的随机数,然后将生成的随机数结果返回给number变量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】