ユーザーが3つのフォルダ名を入力したら、他の名前をすべて$ colの場所に一度だけ配置したいと思います。
rsync -RravhP $Code --exclude "pub/$col" --exclude "$col" --exclude "$col" $destination;
#!/bin/bash
echo " enter source folder name" ;
read Code ;
echo " enter destination folder name"
read destination ;
if [ $Code ] ;
then
echo " enter folders to exclude seperated by a space"
read folders ;
colors="$folders"
for col in "$colors"
do
rsync -RravhP $Code --exclude "pub/$col" --exclude "$col" --exclude "$col" $destination ;
done
else
echo " something went wrong, please check foldername "
fi
ベストアンサー1
--exclude
ユーザーが入力した名前ごとにフラグも作成したいとします。つまり、ユーザーが名前を入力したら、foo bar
コマンドラインに次の内容を含めたいと思いますか?
rsync ... --exclude foo --exclude bar ...
これでマークしたから強く打つ、あなたが利用できるread -a
ユーザーが直接入力した単語を読んでください。大量に、必須パラメータを含む別の配列を構築しますrsync
。
read -a dirs
excludes=()
for d in "${dirs[@]}" ; do
excludes+=(--exclude "$d")
done
rsync -RravhP "$Code" "${excludes[@]}" "$destination"
そうでない場合でも、2つの名前の合計を取得するのと同じものを入力して、スペースで名前をエスケープ-r
できます。read
aa bb\ cc
aa
bb cc