我正在尝试在 Windows 下执行一些非常简单的脚本 .sh,但我真的做不到。我对脚本和 babun 完全是初学者,所以我试着解释我的问题。
我有 2 个文件,需要使用 sed 命令来操作它们。
输入的命令是:
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_01/
sed -i "15s|.*| <filename>C:\\\ProgramData\\\ServerCare\\\data\\\xml\\\guide_01.xml</filename>|" WebGrab++.config.xml
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_02/
sed -i "15s|.*| <filename>C:\\\ProgramData\\\ServerCare\\\data\\\xml\\\guide_02.xml</filename>|" WebGrab++.config.xml
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_01/
sed -i '/<!--02-->/,/<!--19-->/d' WebGrab++.config.xml
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_02/
sed -i '/<!--01-->/,/<!--02-->/d' WebGrab++.config.xml
sed -i '/<!--03-->/,/<!--19-->/d' WebGrab++.config.xml
逐一发送这些命令,一切正常。
如果我在一个 .sh 文件中添加相同的命令,则无法正常工作。在 shell 上,当我执行我创建的文件时,我发现我使用的所有路径都是错误的。为什么如果我逐个运行命令,一切都正常,而如果我运行一个脚本,却不行?
这是我制作的 cygwin.sh 文件
#!/bin/bash
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_01/
sed -i "15s|.*| <filename>C:\\\ProgramData\\\ServerCare\\\data\\\xml\\\guide_01.xml</filename>|" WebGrab++.config.xml
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_02/
sed -i "15s|.*| <filename>C:\\\ProgramData\\\ServerCare\\\data\\\xml\\\guide_02.xml</filename>|" WebGrab++.config.xml
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_01/
sed -i '/<!--02-->/,/<!--19-->/d' WebGrab++.config.xml
cd /cygdrive/c/ProgramData/ServerCare/WebGrab_02/
sed -i '/<!--01-->/,/<!--02-->/d' WebGrab++.config.xml
sed -i '/<!--03-->/,/<!--19-->/d' WebGrab++.config.xml
我收到的错误:
{ bash } » ./cygwin.sh
/cygdrive/c/ProgramData/ServerCare/data/bash
./cygwin.sh: line 2: $'\r': command not found
: No such file or directoryygdrive/c/ProgramData/ServerCare/WebGrab_01/
: No such file or directoryonfig.xml
: No such file or directoryygdrive/c/ProgramData/ServerCare/WebGrab_02/
: No such file or directoryonfig.xml
: No such file or directoryygdrive/c/ProgramData/ServerCare/WebGrab_01/
: No such file or directoryonfig.xml
: No such file or directoryygdrive/c/ProgramData/ServerCare/WebGrab_02/
: No such file or directoryonfig.xml
sed: can't read WebGrab++.config.xml: No such file or directory
另外,我每天需要编辑文件 2 次,有没有一种方法可以启动文件 .sh 并在 Babun shell 中执行它?我知道在 Windows 7 下自动启动它的方法,但不知道如何关联备用 shell。如果我启动文件 .sh 并选择 babun 来执行它,什么也不会发生。
谢谢大家能回答我的建议:)
感谢 DavidPostill 帮助我进行编辑。
答案1
提示在这里:
./cygwin.sh:第 2 行:$'\r':未找到命令
将文件从 CRLF 行终止转换为仅 LF 终止
d2u ./cygwin.sh
在 cygwin 上,该d2u
命令属于包 dos2unix-7.3.4-1,我认为 babun 也应该有它。