我写了一个基本的shell脚本,创建目录,并更改目录到该文件夹中写入。现在我有以下内容:
mkdir -p "Home/first/second/third" cd "Home/first/second/third"
这会产生不希望的结果,因为文件结构如下所示:
- Home - first - second - third\r
我想去掉third\r上的\r,但我不确定为什么要这样做。我已经尝试了大量不同的变体,似乎无法找出添加额外\r的问题所在
third\r
\r
w8biq8rn1#
你确定这是剧本吗因为mkdir -p“Home/first/second/third”应该并且确实创建了类似的结构。
Home - first - second - third
你需要弄清楚你使用的是什么操作系统和shell。你是在主机上创建文件还是从windows机器复制到主机上?
dos2unix script.sh
来摆脱那些讨厌的\r Windows字符。
1mrurvl12#
感谢@Klox弄清楚了这一点。在Windows计算机上编辑的文件以\r\n结尾,而在Linux计算机上编辑的文件以\n结尾。因此,尽管代码是在Linux上编译的,但它仍然以\r\n结束创建的文件,导致在mkdir中创建的最后一个目录以\r结束。为了删除这个\r,文件必须在Linux环境中写入。
\r\n
mkdir
56lgkhnf3#
VSCode用户会发现,如果他们通过vscode创建了一个目录,\r默认情况下,在macos(ksh终端)或linux上,它也会包含这个目录。尽管vscode直接在macos/linux系统上运行。
3条答案
按热度按时间w8biq8rn1#
你确定这是剧本吗
因为mkdir -p“Home/first/second/third”应该并且确实创建了类似的结构。
你需要弄清楚你使用的是什么操作系统和shell。
你是在主机上创建文件还是从windows机器复制到主机上?
使用
来摆脱那些讨厌的\r Windows字符。
1mrurvl12#
感谢@Klox弄清楚了这一点。
在Windows计算机上编辑的文件以\r\n结尾,而在Linux计算机上编辑的文件以\n结尾。
因此,尽管代码是在Linux上编译的,但它仍然以
\r\n
结束创建的文件,导致在mkdir
中创建的最后一个目录以\r
结束。为了删除这个\r
,文件必须在Linux环境中写入。56lgkhnf3#
VSCode用户会发现,如果他们通过vscode创建了一个目录,\r默认情况下,在macos(ksh终端)或linux上,它也会包含这个目录。尽管vscode直接在macos/linux系统上运行。