编写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变量。

浙公网安备 33010602011771号