我想从XML stdin获取目录名,然后将内容复制到targetdirectory:
count=$(echo $xmlstring | xmlstarlet sel -t -v "count(//directory)" -) && for ((i=1; i<=count; i++)); do {currentpath=$(echo $xmlstring| xmlstarlet sel -t -v "//directory[$i]/text()" -) && cp currentpath /opt/targetdir} ; done
收到错误:
意外令牌附近的语法错误`echo&#39;
当我使用echo
代替cp
时:
count=$(echo $xmlstring | xmlstarlet sel -t -v "count(//directory)" -) && for ((i=1; i<=count; i++)); do {currentpath=$(echo $xmlstring| xmlstarlet sel -t -v "//directory[$i]/text()" -) && echo currentpath} ; done
基本上我试图将xml Stdin中的目录名称作为我的CP命令的源目录....所以最后,xml中指定的目录中的所有文件都被复制到targetdir
我收到错误:
-bash: {currentpath=/opt/in1: No such file or directory
{currentpath=: command not found
从xml stdin获取目录并写入txt文件工作,
但是当我想从currentdirectory复制到某个targetdir时,它不起作用。
答案 0 :(得分:2)
出现了很多错误,请参阅此更正版本:
count=$(echo "$xmlstring" | xmlstarlet sel -t -v "count(//directory)" -)
for ((i=1; i<=count; i++)); do
currentpath="$(
echo "$xmlstring" |
xmlstarlet sel -t -v "//directory[$i]/text()" - |
tr -d '$\n'
)"
cp "$currentpath" "/opt/targetdir/"
done