2016-04-27 39 views
1

私のコンピュータから私のコンピュータから私のAndroid携帯電話に私の音楽をssh経由で送るスクリプトを書こうとしていますが、ここではコードの一部は次のとおりです。ファイルがリモートサーバ上に存在し、パスに空白があるかどうかを確認してください

while read SONG 
do 
    echo $SONG 
    ssh -qi ~/.ssh/key [email protected]$ip [[ -f "/sdcard/Music/${SONG}" ]] && echo "File exists" || echo "File does not exist" 
done < ~/.mpd/playlists/Blues.m3u 

目標は歌が電話機にすでにあるかどうかを確認することであり、そうでない場合、それはあります場合、私はそれがよりも同じ相対パスである(それをscpします.m3uファイル)。構文エラー:

私はいつもSHだ「デイビス/失われた」予期せぬ演算子/オペランドを、私は私が を免れることはできないことをデービスの前にスペースがあるので、それは(最初の$ SONGはギアター・デイビス/失われていると思います私もこれを試してみました

ソウルマンBlue.mp3の/悲しいシェード)、同じ結果

while read SONG 
do 
    echo $SONG 
    SONG="/sdcard/Music/$SONG" 
    echo $SONG 

    ssh -qi ~/.ssh/key [email protected]$1 [[ -f "$SONG" ]] && echo "File exists" || echo "File does not exist" 
done < ~/.mpd/playlists/Blues.m3u 

アイデアを歓迎します!!!マニュアルページの概要で説明したように

答えて

2

sshコマンドは、コマンドとして一つだけの引数を受け付けます

SYNOPSIS 
    ssh [...] [[email protected]]hostname [command] 

あなたは正しい結果をしたい場合はそれに付着する必要があります。良いスタートはこのように、引用符の中に全体のコマンドを入れて(と任意の内側の引用符をエスケープ)することです:

ssh -qi ~/.ssh/key [email protected]$1 "[[ -f \"$SONG\" ]] && echo \"File exists\" || echo \"File does not exist\"" 

それはあなたの問題を解決する必要があります。

+0

ありがとうございました! 実際に ssh -qi〜/ .ssh /キールート@ $ 1 "[[-f \" $ SONG \ "]]" && "ファイルが存在します" ||エコー "ファイルは存在しません" も正しく、サーバではなくクライアントでエコーします。 しかし、sshはループを止めているようですので、私はBlues.m3uの最初の行しか持っていません。 –

+0

これはその答えです:http://stackoverflow.com/questions/9393038/ssh-breaks-out-of-while-loopinバッシュ –

関連する問題