2

lynx を使用して HTML ソースをプレーン テキストに変換するシェル スクリプトを作成しました。

ここにあります:

#!/bin/sh

if [ -f = "/usr/bin/lynx" ]
  then
    if [ -f = "$1" ]
      then
        lynx -dump $1 > $2
      else
        echo "File $1 does not exist!"
    fi
  else
    echo "Lynx is not installed!"
fi

さて、正しいディレクトリに lynx が存在し、正しい引数を渡しましたが、「Lyns がインストールされていません!」というメッセージが表示されます。メッセージまたは(最初のテストにコメントした場合)「ファイル $1 は存在しません!」。私はshが苦手なので、スクリプトの何が問題なのか誰か教えてもらえますか?

4

4 に答える 4

4

最初の if は間違っているので、次のように置き換える必要があると思います

if [ -f /usr/bin/lynx ]
于 2009-05-23T15:15:26.987 に答える
2

「-f =」を削除して、「-f」だけにしてみてください

于 2009-05-23T15:16:20.997 に答える
0

今はそのようなものです:

#!/bin/sh

if [ -f /usr/bin/lynx ]
  then
    if [ -f $1 ]
      then
        lynx -dump $1 > $2
      else
        echo "File $1 does not exist!"
    fi
  else
    echo "Lynx is not installed!"
fi

そして、テストの問題はなくなりましたが、今はこのエラーが発生します:

7行目:$ 2:あいまいなリダイレクト

でも

lynx -dump site.html> site.txtは、コンソールから実行すると正常に機能します

于 2009-05-23T16:29:25.180 に答える
0
LINKS=`which links`
if [ -x $LINKS ]; then
   ...
else
   ...
endif

/usr/bin/ にインストールされていない場合はどうなりますか? 何らかの理由で実行できない場合はどうなりますか?

于 2009-05-23T16:35:34.213 に答える