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

bybem2ql  于 2022-10-23  发布在  Linux
关注(0)|答案(2)|浏览(236)

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

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:路径必须在表达式之前:sample.so用法:Find[-H][-L][-P][-OLevel][-D HELP|TREE|SEARCH|STAT|RATES|OPT|EXEC][路径...][表情]
当我在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命令中传递PATH变量?

epfja78i

epfja78i1#

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

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

btxsgosb2#

最好不要使用for循环,并将输出存储在数组中,然后就可以循环或执行任何操作。

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

相关问题