'\r' 添加脚本命令的结尾

'\r' 添加脚本命令的结尾

这是我的脚本:

#!/bin/bash
hd='pwd'
cd $hd

当我尝试运行它时,它失败并显示:

line 3: cd: $'pwd\r\r': No such file or directory

到底是怎么回事?

答案1

\r问题表明您在 Windows 计算机上编辑了脚本文件。Windows\r\n使用行终止符而 Linux(以及大多数其他操作系统)则\n单独使用。当您在 Windows 中编辑文件时,Windows 会\r在行尾添加内容,这会破坏您的脚本。

因此,首先删除\r

sed -i 's/\r//g' script.sh

下一个问题是,你的脚本并没有按照你的想法执行。或者我想象的你认为的,因为你并没有真正说出来。我猜你认为这hd='pwd'会将变量设置$hd为命令返回的值pwd。但事实并非如此。你只是将变量设置为细绳 pwd

$ hd='pwd'
$ echo "$hd"
pwd

要将命令的输出用作变量的值,您需要使用var=$(command)var=`command`

$ hd=$(pwd)
$ echo $hd
/home/terdon

所以你的脚本应该是:

#!/bin/bash
hd=$(pwd)
cd "$hd"

但在本例中,你甚至不需要这样做。当前目录已经在变量中了:

$ echo "$PWD"
/home/terdon

因此您也可以这样做hd=$PWD。或者简单地这样做cd "$PWD"

答案2

我必须打开vim文件编辑器并执行:set fileformat=unix

参考:https://stackoverflow.com/questions/54571331/unable-to-prepare-context-path-r-not-found

相关内容