0

選択したテキストに文字列「-----BEGINPGP 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れる実行可能ファイルを検索します。引数が正常に実行されるかどうかに応じて、thenまたはelseブランチを実行します。はい、コマンドです(ところでの同義語)。あなたはおそらくしたいifif[test

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

(追加-qするgrepと何も出力されません。)

于 2012-08-27T06:46:42.490 に答える
0

ここにいくつかの要素が欠けていると思います:

  • スペース : 開始 '[' の後に 1 つと終了 ']' の前にもう 1 つ
  • バッククォート : 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

2つのバリエーションを提案したいと思います。どちらも等しい

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

また

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