这是我的脚本:
#!/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