scp
こんにちは、ある環境から別の環境にディレクトリをコピーしようとしています。ディレクトリが次\
のように配置されているとします。dir1
dir2
dir3
これで、scp
コピーとしてそれを列としてリストする必要があります{'dir1','dir2',...}
。引用符(''
)は生成できますが、カンマ(,
)は生成できません。カンマを作成するのに役立ちますか?現在は生産のみできます{'dir1' 'dir2'...}
。コンマを生成できません。この問題を解決するのに役立ちます。
scp -rp hdqamktg@hdstg-c01-edge-03:/hdfs/app/qa/MarketingIT/warehouse/mktg_bdo.db/mktg_contact_roles_comp /hdfs/app/dev/MarketingIt/warehouse/hddvmktg/mktg_b
(/hdfs/app/qa/MarketingIT/warehouse/mktg_bdo.db/mktg_contact_roles_compの下のディレクトリは、viewdate=2015-01-02 viewdate=2015-01-02 viewdate=2015-01-03などです。)
次のように動作します。scp -rp $sourceUser@$sourceHost:$srcDir$pathSeperator{'dir1','dir2'} $targetPath$pathSeperator
スクリプトから得られた出力は次のようになります。 "mktg_mbd.web_data_uri_sessionized"テーブルのデータファイルをコピーしています... {'viewdate=2016-04-02' 'viewdate=2016-04-03}
正常にコピーするには、{'viewdate=2016-04-02','viewdate=2016-04-03}である必要があります。
ターゲットディレクトリには、viewdate=2016-03-01 viewdate=2016-03-05 viewdate=2016-03-09 viewdate=2016-03-13 viewdate=2016-03-17 などがあります。
END_DATE_COMP=$(date -d $END_DATE +%s)
NEXT_DATE=$ST_DATE;
NEXT_DATE_COMP=$(date -d $NEXT_DATE +%s)
DATE_LIST='{'
while [ $NEXT_DATE_COMP -le $END_DATE_COMP ]
do
DATE_LIST=$DATE_LIST"'viewdate="$NEXT_DATE"'"
NEXT_DATE=`date +%Y-%m-%d -d "$NEXT_DATE + 1 day"`
NEXT_DATE_COMP=$(date -d $NEXT_DATE +%s)
done
DATE_LIST=$DATE_LIST | sed -i 's+ +,+g'
DATE_LIST=$(echo -n $DATE_LIST | head -c -1)
DATE_LIST=$DATE_LIST"}"
echo $DATE_LIST
#scp -rp $sourceUser@$sourceHost:$srcDir$pathSeperator$DATE_LIST $targetPath$pathSeperator
echo "copied the data for the partition viewdate="$DATE_LIST
したがって、日付ディレクトリのリストは{'dir1' 'dir2'}です。だからコンマを逃した。
答え1
ディレクトリ名にスペースがないとします。
echo foo bar baz | sed "s#[^ ]*#'&'#g;s/ /,/g;s/.*/{&}/"
出力:
{'foo','バー','バズ'}