我不敢相信我已经花了1.5个小时处理这些微不足道的事情。我正在编写一个简单的shell脚本,用于读取文件,将输出存储在一个变量中,并将变量回显到STDOUT。在shell脚本中使用grep给出找不到文件的错误
我已经检查了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 fails inside bash script but works on command line,甚至用
dos2unix
删除任何可能的回车。 - 此外,当我尝试使用任何grep选项时,如:
tt=grep -oE 'test' testingFile
,我收到错误消息:./out.sh: line 3: -oE: command not found
。 - 这太疯狂了。
你正在做的事是临时的(仅对于这个命令),将环境变量'tt'设置为字符串'grep',并运行'$ 1'内容的参数'test' ,第一个脚本参数)(和'tt'环境变量集合) –