如何在 for 循环中的 ssh 命令中传递变量
How to pass variable inside the ssh command inside for loop
我有一个虚拟机,其中有一个文件夹 A,其中包含 doc1.txt
doc2.txt
king1.so
和 king2.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
我有一个虚拟机,其中有一个文件夹 A,其中包含 doc1.txt
doc2.txt
king1.so
和 king2.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