前言
bat 脚本和 sh 脚本是分别用于 Windows 和 类 Unix 系统(如 Linux、macOS) 的批处理/脚本文件,用于自动化执行一系列命令
BAT 与 SH 脚本命令对比表
功能 | Windows .bat / .cmd 脚本 | Linux/macOS .sh 脚本(Bash) |
---|---|---|
输出信息 | echo Hello World | echo "Hello World" |
注释 | :: 注释内容 或 rem 注释内容 | # 注释内容 |
变量赋值 | set name=张三 | name="张三" |
引用变量 | %name% | $name 或 ${name} |
执行命令并获取输出 | 不直接支持(需重定向到文件) | output=`ls` 或 output=$(ls) |
创建目录 | mkdir C:\temp | mkdir /tmp/temp |
删除文件 | del file.txt | rm file.txt |
删除目录(含内容) | rmdir /s /q folder | rm -rf folder |
复制文件 | copy file1.txt file2.txt | cp file1.txt file2.txt |
移动/重命名文件 | move old.txt new.txt | mv old.txt new.txt |
判断文件是否存在 | if exist file.txt echo 存在 | if [ -f file.txt ]; then echo "存在"; fi |
判断目录是否存在 | if exist C:\temp\nul echo 存在 | if [ -d /tmp ]; then echo "存在"; fi |
延迟/睡眠 | timeout /t 5 | sleep 5 (单位:秒) |
调用另一个脚本 | call script2.bat | . script2.sh 或 source script2.sh 或 ./script2.sh |
跳转标签 | goto label :label | 使用函数:function label() label |
退出脚本 | exit 或 exit /b 0 | exit 0 |
设置可执行权限 | 不需要 | chmod +x script.sh |
执行脚本 | script.bat 或双击 | ./script.sh 或 bash script.sh |
当前脚本路径 | %~dp0 | $(dirname "$0") 或 $(realpath "$(dirname "$0")") |
参数引用 | %0 (脚本名)%1 , %2 ...(参数)%* (所有参数) | $0 (脚本名)$1 , $2 ...(参数)$@ 或 $* (所有参数) |
字符串连接 | set combined=%str1%%str2% | combined="$str1$str2" |
字符串长度 | 无内置命令(需 PowerShell 或复杂逻辑) | ${#var} |
获取子字符串 | 无直接支持 | ${var:0:5} (从索引0取5个字符) |
环境变量引用 | %PATH% | $PATH |
换行符 | \r\n (CRLF) | \n (LF) |
注意事项
路径分隔符:
- Windows:
\
- Linux/macOS:
/
- Windows:
大小写敏感性:
.bat
:不区分大小写(命令和变量).sh
:区分大小写
脚本首行(Shebang):
.sh
脚本通常以#!/bin/bash
开头,指定解释器。.bat
脚本无此概念。
错误处理:
.bat
:使用%errorlevel%
获取上一条命令返回码。.sh
:使用$?
获取上一条命令退出状态。
我们编写跨平台脚本时,建议使用 PowerShell(.ps1
)或 Python,它们在 Windows、Linux 和 macOS 上均有良好支持
.bat脚本集合
.sh脚本集合
补充扩展(定时任务)
Windows
- 我的电脑》》》控制面板》》》计划任务
- 任务计划程序库》》》创建基本任务
- 填写任务信息》》》执行间隔》》》执行脚本》》》是否登录运行
Linux
在Linux系统中,创建定时任务主要通过cron服务来实现
- 编辑Crontab文件
crontab -e
这个命令会打开当前用户的cron文件进行编辑。如果你是第一次使用,可能会让你选择编辑器(如nano或vi)
- 示例(每天凌晨2点执行一个名为my_script.sh的脚本)
0 2 * * * /path/to/your/script/my_script.sh
- 保存并退出
编辑完成后,根据选择的编辑器(如使用vi,则是:wq保存并退出),保存更改并退出编辑器
- 查看当前所有定时任务
crontab -l
注意事项
确保脚本有执行权限(chmod +x my_script.sh)。
脚本路径应该是绝对路径,以避免因环境变量不同导致的执行失败
2 comments
我也来试试
看的我热血沸腾啊