Bash 基于grep返回的操作

Bash 基于grep返回的操作,bash,shell,Bash,Shell,我想知道如何执行一个shell命令,并根据返回执行另一个命令 我现在只有这个命令可玩,而且一事无成 grep "data" `ls -tr | tail -1` 仅此一项就可以很好地工作,greps将“数据”保存在最新的时间戳文件中。 我知道我需要一个if语句和条件,但我的结构不起作用,请告诉我最好的方法 因此,重申一下,我希望能够grep文件夹中的最新文件,并根据grep在我的案例“data”中找到的返回值,执行另一个命令,在我的案例中是: ping google.com > ping

我想知道如何执行一个shell命令,并根据返回执行另一个命令

我现在只有这个命令可玩,而且一事无成

grep "data" `ls -tr | tail -1`
仅此一项就可以很好地工作,greps将“数据”保存在最新的时间戳文件中。 我知道我需要一个if语句和条件,但我的结构不起作用,请告诉我最好的方法

因此,重申一下,我希望能够grep文件夹中的最新文件,并根据grep在我的案例“data”中找到的返回值,执行另一个命令,在我的案例中是:

ping google.com > ping.txt

我的文件结构是…/test/test\u files/test.1.txt

我需要从…/test/location运行脚本

我的test1.txt文件如下所示:

send data ping
我还需要排除对正在运行的实际脚本的搜索,因此将使用--exclude=myscript.sh

取自amdixon answer,并对其进行了一些修改

#!/bin/bash

last_file=$(ls -tr ../test/test_files/* | tail -1);
grep -r "data" --exclude=test1.txt "$last_file" 1>/dev/null;

if [[ $? -eq 0 ]]; then
  printf "found..\n";
  ping google.com > googlestack.txt
else
  printf "not found..\n";
fi
//Bubs.

只需添加一个if:

if grep data "$(ls -tr | tail -1)"; then
  cmd  # some command to execute if the file matches
else
  cmd # command to execute if the file does not match
fi

请注意,您将双引号放在了完全错误的位置:“数据”不受字段拆分的约束,因为它不包含空格,但由流程替换生成的字符串受字段拆分的约束,因此必须将其引用。

要在当前目录中查找最新条目,请执行以下操作:


来源:

我错过了路径中的/*现在可以正常工作了。 谢谢你的帮助,尤其是阿姆迪克森

#!/bin/bash

last_file=$(ls -tr ../test/test_files/* | tail -1);
grep -r "data" --exclude=test1.txt "$last_file" 1>/dev/null;

if [[ $? -eq 0 ]]; then
  printf "found..\n";
  ping google.com > googlestack.txt
else
 printf "not found..\n";
fi
我认为“xargs”也是一个好方法,如下所示: 我创建了一个包含3个文件的目录“test”。 测试 ├── t1 ├── t2 └── t3 执行以下命令以删除所有文件

find test/t* -print|xargs rm -rf

现在所有的文件都被删除了。

你能展示一下你的尝试吗?或者至少grep返回的行的格式是什么?有很多方法可以满足您的要求…那么您是要grep查找上一个文件中的数据还是grep查找文件列表中的数据?我的文件结构是…/test/test\u files/test.1.txt我想从…/test执行.sh文件对不起,我指的是test.1.txt文件中包含数据的行的结构。如果只是文件中存在单词
data
,那么下面Wiliam Pursell的回答应该是好的。先生,即使没有找到字符串,您的代码也会执行cmd。。。我正在使用一个模糊的字符串进行grep搜索。我想我知道哪里出错了…代码正在搜索实际的脚本,这就是为什么总是找到它,因为它是最新的文件,所以将对其进行搜索。这就是为什么我需要知道如何在两个分支上执行这个脚本,或者在grep过程中排除这个脚本。
find test/t* -print|xargs rm -rf