我正在尝试编写一个脚本,通过ssh将我的音乐从我的电脑发送到我的Android手机,但是我遇到了一些困难。这是一段代码:
while read SONG
do
echo $SONG
ssh -qi ~/.ssh/key root@$ip [[ -f "/sdcard/Music/${SONG}" ]] && echo "File exists" || echo "File does not exist"
done < ~/.mpd/playlists/Blues.m3u
目标是检查歌曲是否已经在手机中,如果不是我将scp它(如果它在那里它具有相同的相对路径而不是.m3u文件)。
我总是得到sh:语法错误:'戴维斯/迷失'意外的操作员/操作数,我认为这是因为戴维斯之前有一个空间我无法逃脱 (第一个$ SONG是Geater Davis / Lost Soul Man /一个悲伤的Shade Shade of Blue.mp3)
我也试过这个,结果相同
while read SONG
do
echo $SONG
SONG="/sdcard/Music/$SONG"
echo $SONG
ssh -qi ~/.ssh/key root@$1 [[ -f "$SONG" ]] && echo "File exists" || echo "File does not exist"
done < ~/.mpd/playlists/Blues.m3u
欢迎观点!!!
答案 0 :(得分:2)
ssh
命令只接受一个参数作为命令,如手册页的概要中所述:
SYNOPSIS
ssh [...] [user@]hostname [command]
如果您想要正确的结果,您需要坚持这一点。好的开始是将整个命令放入引号(并转义任何内部引号),如下所示:
ssh -qi ~/.ssh/key root@$1 "[[ -f \"$SONG\" ]] && echo \"File exists\" || echo \"File does not exist\""
它应该可以解决您的问题。