grep命令在命令行中工作,但在bash脚本中不起作用:得到没有这样的文件或目录erro

时间:2015-12-09 07:49:36

标签: bash shell ssh grep escaping

我知道已经有一些相关的问题,但不能让它对我有用!

所以我可以在命令行运行grep并且它工作正常,但如果我在bash脚本上执行此操作,则会出现以下错误:

grep: secondword:No such file or directory 

我通过ssh连接到服务器,然后运行一些命令。服务器中grep的路径是/ bin / grep,但它仍然不起作用。以下是示例代码:

#!/bin/bash

$host="user@host";
ssh $host "
myinfo=\$(grep "word secondword" path/to/file);
"

我还验证了它没有使用Notepad ++在Windows中创建的CR。有想法该怎么解决这个吗?

编辑:

根据建议,我使用引号进行了以下更改:

#!/bin/bash

$host="user@host";
ssh $host "
myinfo=\$(grep \"word secondword\" path/to/file);
"

但现在我有一个非常奇怪的行为:它看起来像列出了主服务器路径上的所有文件。回显变量:

file1 file2 file 3
file4 file5 etc.

为什么这样做?我错过了什么吗?

1 个答案:

答案 0 :(得分:-2)

请把脚本放在工作目录上。运行crontab时,它将作为用户主页作为默认路径。

#!/bin/bash
cd Your_Path
$host="user@host"
ssh $host
myinfo=\$(grep "word secondword" path/to/file)