为什么该Bash脚本无法执行,也无法通过touch命令创建txt文件?
问题相关脚本
#!/bin/bash touch network_detials.txt while true; do ifconfig -a | cat >> network_detials.txt done
故障可能原因
- 脚本未赋予可执行权限
未给脚本添加执行权限的情况下直接运行./脚本文件名.sh会触发权限报错,整个脚本不会启动执行,自然不会执行touch命令创建文件。可执行chmod +x 脚本文件名.sh添加执行权限后再运行。 - 换行符格式不兼容导致解释器识别失败
如果脚本是在Windows环境下编辑后传到Linux环境使用,Windows默认的CRLF换行符会让首行#!/bin/bash末尾附带不可见的\r字符,系统无法识别到正确的bash解释器,直接终止运行,所有脚本逻辑都不会执行。可执行dos2unix 脚本文件名.sh转换换行符格式解决。 - 执行用户无当前工作目录的写入权限
运行脚本的用户对执行脚本时的当前工作目录没有写入权限时,touch命令会触发权限不足报错,无法创建对应文件。可将脚本迁移到当前用户有写入权限的目录(例如用户主目录~/)下再执行。 - 脚本存放分区挂载了noexec属性
若脚本存放在带有noexec挂载属性的分区(例如部分系统配置的/tmp目录、外置存储分区等),即便添加了可执行权限也无法正常启动脚本,所有命令都不会执行。可将脚本迁移到非noexec属性的分区后再运行。 - 相对路径导致文件创建位置不符合预期
脚本中使用相对路径创建文件,如果你执行脚本时的工作目录和脚本存放目录不一致,文件会被创建在执行命令时的工作目录下,你到脚本存放目录查找时就会误以为文件没有创建成功。可将脚本中的文件路径改为绝对路径(例如/home/你的用户名/network_detials.txt)避免路径混淆。
内容的提问来源于stack exchange,提问作者Fman_95
相关产品推荐
相关产品推荐

