简单介绍.bat文件和.sh文件

已被阅读 73 次 | 文章分类:日常随笔 | 2024-11-01 01:03

本文简单介绍.bat和.sh后缀的文件格式

1 bat和sh后缀文件概念

👉.sh文件是Unix/Linux系统上的脚本文件,通常使用Shell语言编写,如Bash或Sh

                                            
#!/bin/bash
VAR="Welcome to Xiaobai!"
echo $VAR
                                            
                                        

👉.bat文件是Windows系统上的脚本文件,通常使用批处理语言编写

                                            
@echo off
set VAR=Welcome to Xiaobai!
echo %VAR%
pause
                                            
                                        

两者都用于执行各种批处理操作,自动化任务、定时执行任务等应用场景.例如可以使用“任务计划程序”来创建一个任务,并指定要运行的脚本

2 详细对比

(1) 文件扩展名

  • bat脚本:文件扩展名通常为.bat或.cmd
  • sh脚本:文件扩展名通常为.sh

(2) 注释

👉 bat脚本:使用REM或::进行注释

                                            
REM This is a comment
:: This is also a comment
                                            
                                        

👉sh脚本:使用#进行注释

                                            
# This is a comment
                                            
                                        

(3) 变量

👉bat脚本:使用set命令定义变量,引用变量时使用%

                                            
set VAR=value
echo %VAR%
                                            
                                        

👉sh脚本:直接赋值定义变量,引用变量时使用$

                                            
VAR=value
echo $VAR
                                            
                                        

(4) 条件语句

👉bat脚本:使用IF语句

                                            
IF "%VAR%" == "value" (
    echo VAR is value
) ELSE (
    echo VAR is not value
)
                                            
                                        

👉sh脚本:使用if语句

                                            
if [ "$VAR" = "value" ]; then
    echo "VAR is value"
else
    echo "VAR is not value"
fi
                                            
                                        

(5) 循环

👉bat脚本:使用FOR循环

                                            
FOR %%i IN (1 2 3) DO (
    echo %%i
)
                                            
                                        

👉sh脚本:使用for循环

                                            
for i in 1 2 3; do
    echo $i
done
                                            
                                        

(6) 函数

👉bat脚本:没有直接的函数定义方式,通常通过标签和GOTO实现

                                            
:my_function
echo This is a function
GOTO :EOF
                                            
                                        

👉sh脚本:使用function关键字或直接定义

                                            
my_function() {
    echo "This is a function"
}
                                            
                                        

(7) 输出重定向

👉bat脚本:使用>和>>进行重定向

                                            
echo Hello > output.txt
echo World >> output.txt
                                            
                                        

👉sh脚本:同样使用>和>>进行重定向

                                            
echo "Hello" > output.txt
echo "World" >> output.txt
                                            
                                        

(8) 运行方式

👉bat脚本:可以直接在命令行中输入脚本名运行,或者双击脚本文件运行

👉sh脚本:通常需要给予执行权限,并在Shell中运行

                                            
chmod +x script.sh
./script.sh
                                            
                                        

3 常见问题

👉问题1:bat文件双击后闪现一下便消失了

解决方法:在命令最后一行加上pause关键词

                                            
@echo off
set VAR=Welcome to Xiaobai!
echo %VAR%
pause
                                            
                                        

👉问题2:bat文件双击运行后汉字乱码

                                            
@echo off
    
REM set 后跟变量名=变量值,注意不能存在空格
set name=小白GIS

REM 然后我们可以采用%%去使用该数据
echo %name%

REM 我们可以直接进行拼接
set age=7
echo %name%有%age%岁

REM set的变量值可以进行界面交互获取(set /P 变量名=提示信息)
set /P yourname=你的名字是:

echo %yourname%
pause
                                            
                                        

运行后乱码如下

/net/upload/image/20241101/20241101005003.png

解决方法:打开文件,点击左上角【文件】,然后【另存为】,将编码设置为ANSI

/net/upload/image/20241101/20241101005256.png

/net/upload/image/20241101/20241101005309.png

再次双击运行,或者直接将bat文件拖入命令行

/net/upload/image/20241101/20241101005322.png

👉问题3:cd 找不到路径

解决方法:如果路径中包含空格,则应该将路径加文件名用双引号括起来

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号