0

これは、コンテンツをサーバーに同期する最初の bash スクリプトです。同期するフォルダをパラメータとして渡したい。ただし、期待どおりに動作しません。

これは私のスクリプトです(sync.shとして保存されます):

echo "STARTING SYNCING... PLEASE WAIT!"
var="$1" ;
echo "parameter given is $var"

if [ "$var"=="main" ] || [ "$var"=="all" ] ; then
    echo "*** syncing  main ***" ;
    rsync -Paz /home/chris/project/main/ user@remote_host:webapps/project/main/ 
fi

if [ "$var"=="system" ] || [ "$var"=="all" ] ; then
    echo "*** syncing  system ***" ;
    rsync -Paz /home/chris/project/system/ user@remote_host:webapps/project/system/ 
fi

if [ "$var"=="templates" ] || [ "$var"=="all" ] ; then
    echo "*** syncing  templates ***" ;
    rsync -Paz /home/chris/project/templates/ user@remote_host:webapps/project/templates/ 
fi

そして、これは私の出力です:

chris@mint-desktop ~/project/ $ sh ./sync.sh templates
STARTING SYNCING... PLEASE WAIT!
parameter given is templates
*** syncing  main ***
^Z
[5]+  Stopped                 sh ./sync.sh templates

引数として「テンプレート」を与えましたが、それは無視されます。なんで?

4

2 に答える 2

2

==演算子の両側にスペースが必要です。次のように変更します。

if [ "$var" == "main" ] || [ "$var" == "all" ] ; then
    echo "*** syncing  main ***" ;
    rsync -Paz /home/chris/project/main/ user@remote_host:webapps/project/main/ 
fi
于 2012-11-08T08:44:07.530 に答える
0

以下のコメントに基づいて、これは私が提案する修正されたスクリプトです。

#!/bin/bash
echo "STARTING SYNCING... PLEASE WAIT!"
var="$1" ;
echo "parameter given is $var"

if [ "$var" == "main" -o "$var" == "all" ] ; then
    echo "*** syncing  main ***" ;
    rsync -Paz /home/chris/project/main/ user@remote_host:webapps/project/main/ 
fi

if [ "$var" == "system" -o "$var" == "all" ] ; then
    echo "*** syncing  system ***" ;
    rsync -Paz /home/chris/project/system/ user@remote_host:webapps/project/system/ 
fi

if [ "$var" == "templates" -o "$var" == "all" ] ; then
    echo "*** syncing  templates ***" ;
    rsync -Paz /home/chris/project/templates/ user@remote_host:webapps/project/templates/ 
fi
于 2012-11-08T08:42:17.230 に答える