为什么echo "Line $line"的附加“ Line”没有添加到for循环内的所有文件中?

#!/bin/bash

INPUT=targets.csv
IFS=","

[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read target user password path
do
    result=$(sshpass -p "$password" ssh -n "$user"@"$target" ls "$path"*file* 2>/dev/null)

    if [ $? -ne 0 ]
    then
            echo "No Heap dumps detected."
    else
            echo "Found a Heap dump! Possible OOM issue detected"
            for line in $result
            do
                    echo "Line $line"
            done
    fi

done < $INPUT

.csv文件内容..

rob@laptop:~/scripts$ cat targets.csv 
server.com,root,passw0rd,/root/

脚本输出..

rob@laptop:~/scripts$ ./checkForHeapdump.sh 
Found a Heap dump! Possible OOM issue detected
Line file1.txt
file2.txt

===============>>#1 票数:0 已采纳

该声明:

for line in $result

$result执行单词拆分,以获取应将$line设置为的每个元素。 单词拆分使用$IFS的定界符。 在脚本早些时候将此项设置为刚, 因此,此循环将遍历$result中用逗号分隔的数据。 由于其中没有任何逗号,因此它只是一个元素。

如果要按行拆分,请执行以下操作:

IFS="
"
for line in $result

  ask by bobbyrne01 translate from so

未解决问题?本站智能推荐:

1回复

Bash用for循环替换ls

我得到了一个提示,使用文件globbing代替Bash脚本中的ls,在我的代码中我按照说明操作并将array=($(ls))替换为: 然而,新功能不会返回任何东西,我在这里做错了吗?
1回复

在bash中ping一个ls列表

我输出的域名列表如下: 我想ping每一个。 这几乎有效: 然而他们都返回: 我究竟做错了什么? 编辑:现在,这是有效的,我需要摆脱以下只是获取IP地址:
2回复

如何在bash中将条件传递给“ for”循环命令?

我想将条件传递给ls或for命令执行以下操作: 我尝试过| , || , OR与[]一起关闭条件,但没有用。 谢谢。
2回复

没有正确地将stdout传递给ls

我正在尝试在sed中编辑一个我遇到问题的简单字符串。 基本上我要做的是使用pwd抓取我当前的工作目录,将其传输到sed,编辑文件路径,然后使用ls检查文件路径内容。 我需要这样做的原因是动态检查备份,以查看备份是否包含我当前正在使用的文件夹中所需的文件(只是将其变为快速热键)。 这是我
1回复

bash,for循环问题

我这样列出了亚马逊s3的一些文件: 该命令返回: 为了循环播放这些文件,我的代码是: 但结果是: 而不是预期的结果: 如何获取预期结果?
5回复

bash:如何显示包含特定文件的第一个目录的名称

我有这个: 但我只需要第一个目录名称,例如: dir1 我这样做: 它可以工作,但是现在我在ssh进行subshell扩展存在问题。 有没有更优雅的方法(没有subshells或sed )来做到这一点? 如果没有,那么我将发布一个关于完全不同的问题的问题-通过ssh
1回复

并发过程— bash脚本编制—为$(ls * .ext)中的FILE做回显$ FILE >> file_list —乱序

通过使用回答 在shebang之后-b / c脚本正在非交互式终端中运行-我的.bash_profile中没有源代码 这意味着在交互式终端中执行的代码的行为可能与在非交互式终端中执行的代码不同...现在针对当前的问题... 我正在尝试获取两个文件(一旦它们出现在文件夹中),然
1回复

在通过SSH传递的脚本文本中,命令替换不起作用[重复]

这个问题已经在这里有了答案: Bash脚本在上一个命令之前运行一个命令。 我要他们一个接一个 2个答案 我尝试使用以下bash访问文件夹的内容; 该脚本试图检查/some_dir/dir_test是否为空,如果不是,则删除该文件夹中的所有文件; 但是我遇
2回复

检查bash中目录的可读文件

我是Bash脚本的新手,并且一直在使用它,但是我有一个我不理解的脚本: 如果我运行它,它什么也不打印。 我很确定我的主目录中有可读文件。 例如: 如果我用另一个目录测试它,它告诉我有两个可读文件: 我的Bash版本是:4.2.45(1)-发行版 我在丢东西吗?
3回复

带有bash for循环的SSH命令选项

我想象征性地链接两个数组的元素。 例如, array1 = (AAA BBB CCC DDD) , array2 = (001 002 003 004) , array2 = (001 002 003 004) 001->AAA , 004->DDD 002->BBB , 0