SSHコマンドのwhileループ

SSHコマンドのwhileループ

リモートシステムに接続してから情報を取得し、パイプを介してwhileループする必要があります。

ssh [email protected] "find ~/listfile/ -iname \"*log*\" |while read line; do cat $line; done"

上記のコマンドは空行を印刷します。コマンドを直接確認してみましたが、find正常に動作し、ファイルのリストが表示されます。

ssh [email protected] "find ~/listfile/ -iname \"*log*\""

見つかったファイルの内容をどのように表示できますか?

ベストアンサー1

findリモートサーバーで一致する名前のファイルを一覧表示してifファイルを追加する場合は、単独で使用する必要があります-type f

ssh USER@HOST 'find ~/listfile/ -type f -iname "*log*" '

catファイルの内容を見つけるには、次findのように使用しますcat

ssh USER@HOST 'find ~/listfile/ -type f -iname "*log*" -exec cat {} +'

あなたの特定の問題は$line二重引用符で囲まれているため、ローカルシェル拡張によって引き起こされます。しかし、とにかくあなたのアプローチはfind結果を繰り返す間違った方法です。バラより検索結果を繰り返すのはなぜ悪い習慣ですか?もっと学ぶ。

おすすめ記事