通过读取文件并从源和目标复制shell脚本

6za6bjd0  于 2023-01-17  发布在  Shell
关注(0)|答案(1)|浏览(132)

我想通过阅读下面这样的文件来创建shell脚本。

/shared36/Upload/IG/01014330122022010599/
/ftpvolume/FileUpload/01014330122022010599

/shared36/Upload/IG/01010504012023003961/
/ftpvolume/FileUpload/01010504012023003961

/shared36/Upload/IG/01011005012023007397/
/ftpvolume/FileUpload/01011005012023007397

/shared36/Upload/IG/01011403012023006138/
/ftpvolume/FileUpload/01011403012023006138

/shared36/Upload/IG/01013804012023001622/
/ftpvolume/FileUpload/01013804012023001622

我想自动化以下任务。

scp /ftpvolume/FileUpload/01014330122022010599/ABC.PDF   /shared36/Upload/IG/01014330122022010599/ABC.PDF

scp /ftpvolume/FileUpload/01010504012023003961/ABC.PDF   /shared36/Upload/IG/01010504012023003961/ABC.PDF

等等...

我的脚本如下

#!/usr/bin/bash
dest=""
src=""
filename="test.txt"
while read -r line; do
    name="$line"
    if [[ $name =~ /shared && $name != "" ]]
    then
    echo "$name - Destination"
    fi

    if [[ $name =~ /ftpvolume && $name != "" ]]
    then
    echo "$name - Source"
    fi
    sleep 1
done< "$filename"

但我只想把它的源和目的地放入scp命令中

elcex8rz

elcex8rz1#

在每次匹配后设置变量,然后在读取源代码后,将它们替换到scp命令中。

#!/usr/bin/bash
dest=""
src=""
filename="test.txt"
while read -r line; do
    name="$line"
    if [[ $name =~ /shared ]]
    then
        dest=$name
    elif [[ $name =~ /ftpvolume ]]
    then
        src=$name
        scp "$src/ABC.PDF" "$dest/ABC.PDF"
    fi
    sleep 1
done< "$filename"

相关问题