0

以下是本地服务器中我的 InputLocation 中的文件

-rw-r----- 1 root root 0 Sep 25 15:03 one.xml
-rw-r----- 1 root root 0 Sep 25 15:03 two.xml
-rw-r----- 1 root root 0 Sep 25 15:03 data.csv
-rw-r----- 1 root root 0 Sep 25 15:03 free.png
-rw-r----- 1 root root 0 Sep 25 15:04 loaded.jpeg

我可以使用以下命令传输文件

scp ${InputPath}/*.{jpeg,xml} ${user}@${HostName}:$OutputPath

但我试图将 extns 放在一个变量中,如下所示

FilesExtnsToBeTransfered=jpeg,xml
scp ${InputLocation}/*.{$FilesExtnsToBeTransfered} ${user}@${HostName}:$OutputPath

但是尽管文件可用,但我得到了以下异常

InputLocation/*.{jpeg,xml}: No such file or directory

请问有什么帮助吗?

4

1 回答 1

0

说:

FilesExtnsToBeTransfered=jpeg,xml
echo {$FilesExtnsToBeTransfered}

将导致{jpeg,xml}不会执行大括号扩展)。

你有两个选择:

  1. (丑陋,不推荐):使用eval.

    eval scp ${InputLocation}/*.{$FilesExtnsToBeTransfered} ${user}@${HostName}:$OutputPath

  2. 将所需的文件扩展名放入数组中:

EXTNS=( jpeg xml )
for i in "${EXTNS[@]}"; do
  scp ${InputLocation}/*.$i ${user}@${HostName}:$OutputPath
done
于 2013-09-30T06:59:28.697 回答