7

FTP 経由でファイルをダウンロードし、サーバーからファイルを削除するために使用する一連のスクリプトがあります。

次のように機能します。

for dir in `ls /volume1/auto_downloads/sync-complete`
do
if [ "x$dir" != *"x"* ]
then
echo "DIR: $dir"

echo "Moving out of complete"
        # Soft delete from server so they don't get downloaded again
        ssh dan@172.19.1.15 mv -v "'/home/dan/Downloads/complete/$dir'" /home/dan/Downloads/downloaded

今 $dir は「これはファイルです」であり、正常に機能します。

私が抱えている問題は、特殊文字に関するものです。

  • 「これは(a)ファイルです」
  • これはファイルなどです」

エラーが発生しやすい:

bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `mv -v '/home/dan/Downloads/complete/This is (a) file' /home/dan/Downloads/downloaded'

エスケープする方法がわからないため、変数が評価され、コマンドが適切にエスケープされます。エスケープ文字、リテラル引用符、通常の引用符などのさまざまな組み合わせを試しました

4

5 に答える 5

2

式全体を引用する必要がありますssh user@host "command":

ssh dan@172.19.1.15 "mv -v /home/dan/Downloads/complete/$dir /home/dan/Downloads/downloaded"
于 2013-06-02T21:33:52.417 に答える