对于我的 Bash 编程作业,我必须创建管道来处理文件以查找一些模式。我目前使用Windows 10 Ubuntu 应用程序终端。我写了以下内容:
echo "Processing Log Files..."
# error is the word I'm looking for in the files
grep error -A 1 logfile1.txt >> filter.txt
grep error -A 1 logfile2.txt >> filter.txt
echo "Done."
但是当我运行带有标题的文件时/bin/sh #!/bin/sh 复制代码我收到此错误:
Processing Log Files...
: Directory nonexistentoder.sh: cannot create filter.txt
: Directory nonexistentoder.sh: cannot create filter.txt
Done.
当我运行带有标题的代码时/bin/bash #!/bin/bash我收到此错误:
Processing Log Files...
: No such file or directoryer.txt
: No such file or directoryer.txt
Done.
我真的不知道为什么会发生这种情况,我将文件的权限更改为以下内容:
drwxrwxrwx 0 root root 512 Mar 20 23:25 .
drwxrwxrwx 0 root root 512 Mar 20 13:59 ..
-rwxrwxrwx 1 root root 316 Mar 20 23:24 decoder.sh
-rwxrwxrwx 1 root root 52247 Mar 19 15:59 logfile1.txt
-rwxrwxrwx 1 root root 33142 Mar 19 15:59 logfile2.txt
-rwxrwxrwx 1 root root 239 Mar 19 15:39 mapping-sorted.txt
答案1
感谢@steeldriver,我发现我编写的脚本隐藏了windows字符,因为我使用的是windows文本编辑器。我运行了以下行,文件有标题/bin/bash #!/bin/bash。
dos2unix scriptName.sh
脚本随后起作用了 :D