您好,我正在尝试将scp
目录从一个环境复制到另一个环境。假设目录位于\
asdir1
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_bdo.db/
(/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','bar','baz'}