Windows 10 Ubuntu子系统Shell脚本执行失败问题求助
解决Windows 10 Ubuntu Bash中Shell脚本重定向报错问题
看你遇到的错误提示Directory nonexistentssion.sh: cannot create output.txt,这里的nonexistentssion.sh明显是把脚本名submission.sh拆错了,大概率是脚本的换行符格式不兼容导致的——毕竟你是在Windows环境编辑的脚本,默认用的是CRLF(回车+换行),而Ubuntu Bash里的Shell只认LF(换行),多余的\r字符会把命令解析得乱七八糟。
下面是具体的解决步骤:
1. 检查脚本的换行符问题
先在Ubuntu Bash里用命令查看脚本里的隐藏字符:
cat -A submission.sh
如果看到每行末尾有^M,那就是确凿的Windows换行符问题了。
2. 转换脚本到Linux兼容格式
最简单的方法是用dos2unix工具转换:
# 如果没装dos2unix,先安装 sudo apt install dos2unix # 转换脚本格式 dos2unix submission.sh
要是不想装工具,也可以用sed命令手动去掉\r:
sed -i 's/\r$//' submission.sh
3. 确认脚本内容的正确性
确保你的脚本内容是干净的,没有多余字符,正确的写法应该是这样:
# file name: submission.sh echo "Hello world" > output.txt
注释行和命令行要分开,每行单独占一行,不要有奇怪的空格或隐藏字符。
4. 额外验证:当前目录的写权限
虽然你去掉重定向能正常执行,说明当前目录大概率有写权限,但还是可以确认一下:
ls -ld .
如果输出里的权限字段(比如drwxr-xr-x)包含w(第三个位置),说明你有写权限;如果没有,用下面的命令给自己加权限:
chmod u+w .
转换完格式后再执行sh submission.sh,应该就能正常生成output.txt了。
内容的提问来源于stack exchange,提问作者Firman
相关产品推荐
相关产品推荐

