0

如果所选文本中出现字符串“-----BEGIN PGP MESSAGE-----”,我想解密所选文本。我有以下代码,但它没有显示任何内容。

#!/bin/bash
xsel > pgp.txt
if [grep -e "-----BEGIN PGP MESSAGE-----" pgp.txt]
then
gnome-terminal --command "gpg -d -o decrypted.txt pgp.txt"
gedit decrypted.txt
fi

当我在选择文本后在终端上运行它时

line 3: [grep: command not found

我是 bash 脚本的新手。任何帮助将不胜感激..
谢谢

4

3 回答 3

1

[grep它搜索称为if参数的可执行文件。if执行其 then 或 else 分支,具体取决于其参数是否成功执行。是的,[是一个命令(testbtw 的同义词)。你可能想要

if grep -q -e "-----BEGIN PGP MESSAGE-----" pgp.txt
then

(添加-q所以grep不输出任何东西。)

于 2012-08-27T06:46:42.490 回答
0

我认为您在这里缺少一些元素:

  • 空格:在开头 '[' 之后有一个,在结束 ']' 之前有一个
  • 反引号:因为你需要测试执行 grep 命令的结果
  • 一种 ';' 在结束 ']' 之后

这是一个重写的版本:

if [ `grep -e "-----BEGIN PGP MESSAGE-----" pgp.txt` ]; then
  gnome-terminal --command "gpg -d -o decrypted.txt pgp.txt"
  gedit decrypted.txt
fi
于 2012-08-27T07:07:03.947 回答
0

我想向您推荐两种变体。两者相等

if $(grep -q -- "-----BEGIN PGP MESSAGE-----" pgp.txt);
then

或者

if $(grep -qe "-----BEGIN PGP MESSAGE-----" pgp.txt);
then
于 2012-08-27T07:09:54.740 回答