如何在 for 循环中的 ssh 命令中传递变量

How to pass variable inside the ssh command inside for loop

我有一个虚拟机,其中有一个文件夹 A,其中包含 doc1.txt doc2.txt king1.soking2.so
我正在尝试使用来自另一个 VM 的 ssh 列出特定扩展名的文件。

VAR_PATH="/predefined/path/to/A"
echo $VAR_PATH

for file_path in `ssh user@xxx.xxx.xxx.xxx "find $VAR_PATH -iname "*.so""`
do
        echo $file_path
done

这是行不通的,并给我错误,因为

find: paths must precede expression: sample.so Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

当我find命令

中对路径进行硬编码时,相同的命令有效
for file_path in `ssh user@xxx.xxx.xxx.xxx "find /predefined/path/to/A -iname "*.so""`
do
        echo $file_path
done

如何在这个 for 循环中的 ssh 命令中传递路径变量

最好不要 for 循环并将输出存储在数组中,然后您可以循环或任何您想要的东西。

array_result=(`ssh user@xxx.xxx.xxx.xxx "find ${VAR_PATH} -iname *.so"`)

试试这个:(centos 8 测试通过)

D=/tmp/test/ && for i in `ssh xxx@xxxxx "find $D -name '*.so'"`;do echo $i;done