因为最近下班前都要拿机子搞压测,所以这段时间对shell脚本比较感兴趣,用chatGPT写shell脚本很方便。
如下是一些案列
比如我需要写一个批处理:写一个批处理在当前文件夹下建立20个文件夹每个文件夹里面有一个文本文档文本文档的第一句话是hello word
将下面代码保存为create_folders.bat文件,在所需的文件夹中运行该批处理文件即可完成操作。
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,20) do (
set folder=Folder_%%i
mkdir !folder!
echo hello world > !folder!\text.txt
)
echo 20 folders with text files have been created.
是不是非常方便~~
如果想把文件夹重命名,比如:写一个批处理将目录下所有文件夹重名为1.2.3.4等形式
@echo off
setlocal enabledelayedexpansion
set count=1
for /d %%i in (*) do (
ren "%%i" "!count!"
set /a count+=1
)
echo All folders have been renamed.
按照刚刚的步骤,再新建一个txt文档,copy进去,保存再重命名运行就好
不过我一般都在linux下写.sh后缀的脚本,他们之间的区别如下:
.sh和.bat是不同操作系统中脚本文件的后缀名,它们有以下区别:
-
.sh后缀:.sh是Shell脚本文件的后缀,在类Unix系统(如Linux、Mac OS)中使用。Shell脚本是一种文本文件,包含一系列用于执行命令和控制流程的Shell命令。通常使用Bash或其他Shell解释器来执行.sh脚本文件。
-
.bat后缀:.bat是批处理脚本文件的后缀,在Windows操作系统中使用。批处理脚本是一种文本文件,包含一系列用于执行命令和控制流程的批处理命令。当运行.bat脚本文件时,系统会调用cmd.exe解释器来执行其中的命令。
下面是一个对比.sh和.bat脚本后缀的表格,包括它们的语法差异:
特性 | .sh脚本 | .bat脚本 |
---|---|---|
后缀名 | .sh | .bat |
操作系统 | Unix-like操作系统(如Linux、Mac OS) | Windows操作系统 |
解释器 | 通常使用Bash或其他Shell解释器 | 使用cmd.exe解释器 |
注释符号 | # | REM |
变量声明 | 使用variable=value 格式 | 使用set variable=value 格式 |
变量引用 | 使用$variable 或${variable} 方式 | 使用%variable% 方式 |
条件语句 | 使用if、elif、else语句结构 | 使用if、else、goto等语句结构 |
循环语句 | 使用for、while、until等循环结构 | 使用for、if、goto等循环结构 |
输入输出 | 使用echo命令输出内容,使用read命令读取用户输入 | 使用echo命令输出内容,使用set /p命令读取用户输入 |
数组 | 支持数组的声明和操作 | 不支持数组 |
文件操作 | 使用cp、mv、rm等命令进行文件操作 | 使用copy、move、del等命令进行文件操作 |
管道和重定向 | 使用管道符号` | 和重定向符号 >、>>`等 |
函数定义 | 使用function_name() { ... } 方式定义函数 | 使用:label 和goto label 方式定义函数 |
脚本执行权限 | 需要给脚本文件添加执行权限 | 不需要额外的执行权限 |
总结来说,.sh和.bat是不同操作系统中使用的不同类型脚本文件的后缀名。.sh用于Unix系统中的Shell脚本,而.bat用于Windows系统中的批处理脚本。