SSHのリモートlsドキュメントが$()で動作しないのはなぜですか? [コピー]

SSHのリモートlsドキュメントが$()で動作しないのはなぜですか? [コピー]

リモートディレクトリのファイル数を数えようとしています。
次のコードがあります。

ssh server.com<<RUNTHIS  
 FILE_COUNT=$(ls -AU /foo/bar/test_dir) 
 echo "$FILE_COUNT" > ~/file_count.txt   
RUNTHIS

これを実行すると、次のような結果が得られます。ls: /foo/bar/test_dir No such file or directory
しかし、ディレクトリがそこにあります。ls /foo/bar/test_dirサーバーに直接アクセスすると、ディレクトリが一覧表示されます。
以下も機能し、内容をファイルに保存します。

ssh server.com<<RUNTHIS  
 ls -AU /foo/bar/test_dir > ~/file_count.txt
RUNTHIS

最初のクリップに何の問題がありますか?

ベストアンサー1

bashにあるので動作しませんheredoc。一重引用符を使用してRUNTHIS保護してください。

ssh server.com<<'RUNTHIS' 
 FILE_COUNT=$(ls -AU /foo/bar/test_dir) 
 echo "$FILE_COUNT" > ~/file_count.txt   
RUNTHIS

おすすめ記事