我不敢相信我已经花了 1.5 个小时在这样微不足道的事情上。我正在编写一个非常简单的 shell 脚本,它 greps 文件,将输出存储在变量中,并将变量回显到 STDOUT。
我已经在命令行上使用正则表达式检查了 grep 命令,它工作正常。但是由于某种原因, grep 命令在 shell 脚本中不起作用。
这是我写的shell脚本:
#!/bin/bash
tt=grep 'test' $1
echo $tt
我使用以下命令运行它./myScript.sh testingFile
:它只是打印一个空行。
- 我已经使用了 chmod 并使脚本可执行。
- 我检查了 PATH 变量是否包含
/bin
在其中。 - 验证
echo $SHELL
给/bin/bash
- 在绝望中,我尝试了以下所有组合:
tt=grep 'test' "$1"
echo ${tt}
- 根本不使用命令行参数,而是硬编码文件名
tt=grep 'test' testingFile
- 我发现了这一点:grep 在 bash 脚本中失败,但在命令行上工作,甚至用于
dos2unix
删除任何可能的回车符。 - 此外,当我尝试使用任何 grep 选项时,例如:
tt=grep -oE 'test' testingFile
,我收到一条错误消息:./out.sh: line 3: -oE: command not found
。 - 这太疯狂了。