小编Bre*_*wer的帖子

如何将子shell结果(数组)传递给SSH命令?

试试这种方式:

#!/bin/bash
myvals=`psql -d mydb -c "select id from table1 where 't'"`

ssh user1@host1.domain.tld "for i in $myvals; do echo \$i >> values; done"
Run Code Online (Sandbox Code Playgroud)

只要psql只返回一个值,它就可以正常工作.但如果有几个值,我会收到这样的回复:

bash: -c: line 1: syntax error near unexpected token `2'
bash: -c: line 1: `2'
Run Code Online (Sandbox Code Playgroud)

另外,我试图:

myvals='1 2 3'
Run Code Online (Sandbox Code Playgroud)

然后它工作正常:值1 2 3被附加到远程主机上的"values"文件; 没有错误消息.如果我尝试另一个子shell命令,例如myvals = ls /bin,则会再次出现错误.很明显,$ myvals已经在本地主机上进行了评估,但是什么使得子shell结果如此不同?

ssh bash subshell psql

1
推荐指数
1
解决办法
388
查看次数

标签 统计

bash ×1

psql ×1

ssh ×1

subshell ×1