lua os.execute() 在windows下 斜杠和反斜杠的坑

lua os.execute() 在windows下 斜杠和反斜杠的坑

首先:

了解一下 windowsunix 下的区别

windows下:
斜杠 / 代表调用参数, 反斜杠 \ 代表路径分隔符
unix 下:
斜杠 / 代表路径分隔符, 反斜杠 \ 代表转化参数

所以: 路径的表达,在 两个系统是相反

然而:

lua中用 os.execute(),用到路径时,不管是 windows 还是 unix 统一都用, 斜杠 /路径分隔符
windows 示例如下:

// 斜杠用法
print(os.execute('mkdir "C:/test5/"'))	// 返回 0,代表执行成功
// 反斜杠用法
print(os.execute('mkdir "C:\test5\"'))	// 返回 1,路径不存在,执行失败

用法:

windows 下执行 os.execute() 时将 反斜杠\ 改为 斜杠/ 即可,

扩展:

(1) os.execute并不是强制转化成unix 的环境执行,因为如下:

windos下用法:

// 双重反斜杠用法
print(os.execute('mkdir "C:\\test5\\"'))	// 返回 0,代表执行成功

unix 下用法:

// 双重反斜杠用法
print(os.execute('mkdir "home\\test5\\"'))	// 返回 512,代表没有路径执行失败

(2) 用 lua 查看 当前使用什么系统

print(package.config:sub(1,1))
// windows 系统下,输出 反斜杠 \
// unix    系统下,输出 正斜杠 /

猜你喜欢

转载自blog.csdn.net/h799710/article/details/112789565
今日推荐