首页 > 解决方案 > 列出命令不显示所有输出

问题描述

尝试在具有其他人的公共 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

标签: linuxbashssh

解决方案


您的代码不起作用,因为a=$(ls -lah)ls -lah's 输出分配给 variable a。改成这样a='ls -lah'就OK了。

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


推荐阅读