Bash在复制之前将数组值附加到文件

时间:2019-10-15 19:15:18

标签: bash

bash(谢谢@Charles Duffy)将每个uniqueid存储在array中,然后将它们传递到%q以获取唯一路径。我遇到的麻烦似乎是用.png中的唯一值重命名每个%q。我以为它可以正常工作,但经过仔细检查,一个.png文件正被发送到scp ....,但是只有1且有错误的uniqueid。似乎.png正在使用第一个scp,而最后一个uniqueid正在使用。在此示例中,有2,但可能更多或更少。谢谢:)。

printf -v cmd_q '(cd /path/to/%q*/*/*/folder && exec sshpass -f file.txt scp -- *.png* xxx@xxx.xx.xx.xxx:'"$dir"'/folder/%q*-data.png)\n' "${array[@]}"
sshpass -f out.txt ssh -o strictHostKeyChecking=no -t xxx@xxx.xx.xx.xx "$cmd_q"

数组

uniqueid1   ---- this is stored in array ----
data.png    ---- this is the file in the path ----

uniqueid2   ---- this is stored in array ----
data.png    ---- this is the file in the path ---

当前

uniqueid1-data.png (but this is really the first png just with the wrong name)

由scp传输的所需文件

uniqueid1-data.png
uniqueid2-data.png

声明-p数组

declare -a array='([0]="ID1" [1]="ID2")'


getRNA_BAM.sh: line 45: declare: (cd /path/to/ID1*/*/folder && exec sshpass -f file.txt scp -- *.png* xxx@xxx.xx.xx.xxx:path/to/destination/ID1-cn_results.png)\n: not found
getRNA_BAM.sh: line 45: declare: ID1 not found

getRNA_BAM.sh: line 45: declare: (cd /path/to/ID2*/*/folder && exec sshpass -f file.txt scp -- *.png* xxx@xxx.xx.xx.xxx:path/to/destination/ID2-cn_results.png)\n: not found
getRNA_BAM.sh: line 45: declare: ID2 not found

声明-p cmd_q

declare -- cmd_q="(cd /path/to/ID1*/*/folder && exec sshpass -f file.txt scp -- *.png* xxx@xxx.xx.xx.xxx:path/to/destination/ID1-cn_results.png)

                  (cd /path/to/ID2*/*/folder && exec sshpass -f file.txt scp -- *.png* xxx@xxx.xx.xx.xxx:path/to/destination/ID2-cn_results.png)

我可以手动ssh进入目录,并且.png在其中,尽管它只是在cn_results之前的scp处,并在其中重命名/附加了{{1 }}值并复制。

array

0 个答案:

没有答案