无法在 WSL 中使用 bash 脚本“cd”或更改目录

无法在 WSL 中使用 bash 脚本“cd”或更改目录

我安装了Ubuntu bash在我的 Windows 机器上,这样我就可以在工作之余测试 Linux 脚本。我创建了一个非常简单的脚本,其中包含基本的“hello world”和更改目录 (cd),但在执行时会显示 hello world。它在 cd to directory 行上出错。

错误如下:

$ ./test.sh
hello world
zipping away
./test.sh: line 6: cd: $'/home/fjaffer/temp\r\r': No such file or directory
./test.sh: line 7: $'\r': command not found
ffr@DP-PC:~$

我的脚本test.sh如下:

#!/bin/bash
echo "hello world"
echo "zipping away"
dir=/home/fjaffer/temp
cd $dir

请指教?谢谢。

答案1

这是因为您在 Windows 机器上创建了脚本,所以\r在每行末尾添加了一些(回车符)。

像这样删除它们:

tr -d '\r' < test.sh > new-test.sh

同时引用变量的值:

cd "$dir"

然后运行脚本:

./new-test.sh

作为提示,最好使用:

 cd ... || exit

以防发生任何故障。


配置你的编辑器,使其使用 Linux 格式保存文件(如果它支持的话)或者使用 bash 中的编辑器,例如nano

在此处输入图片描述

答案2

另一种选择是使用dos2unix命令将文件转换为 Unix 类型格式。

用法:

dos2unix your_file

相关内容