列表命令未显示所有输出

时间:2018-09-20 08:53:26

标签: linux bash ssh

尝试在具有公共ssh密钥的计算机上使用bash连接到多台计算机,并在它们上运行命令以在该计算机上显示输出。如果我在执行脚本时使用下面的代码中的' $ a '变量,则会得到未完成的输出

    bash: total: command not found
    bash: line 1: drwxr-xr-x: command not found
    bash: line 2: drwxr-xr-x: command not found
    bash: line 3: -rw-r--r--: command not found
    bash: line 5: -rwxr-xr-x: command not found
    ....

但是,如果我在不调用 $ a 变量的情况下使用带注释的块,则bash会打印命令的正确输出。

执行的代码:

#!/bin/bash
a=$(ls -lah)
for i in "machine1" "machine2" 

do ssh root\@"$i" "$a; exit;"
*#do ssh root\@"$i" "ls -lah; exit;" - displays accordingly*
done

2 个答案:

答案 0 :(得分:2)

您的代码不起作用,因为a=$(ls -lah)ls -lah的输出分配给变量a。将其更改为a='ls -lah',就可以了。

请参阅bash手册中的命令替换部分

答案 1 :(得分:2)

嗨,我有一个很久以来一直在使用的答案。

declare machines=("user@machine1" "user@machine2")
command="ls -lah"
for machine in "${machines[@]}"
do
  ssh "$machine" "$command"
done

$ a 无效,因为它将被执行。