【问题标题】:Bash: Formatting results inside for loop from a ls commandBash:从 ls 命令在 for 循环内格式化结果
【发布时间】:2013-04-16 00:23:47
【问题描述】:

为什么echo "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

【问题讨论】:

    标签: bash for-loop ssh ls


    【解决方案1】:

    声明:

    for line in $result
    

    $result 执行分词以获取$line 应设置为的每个元素。分词使用$IFS 中的分隔符。在脚本的前面,您将其设置为 ,。所以这个循环将遍历$result 中逗号分隔的数据。由于其中没有任何逗号,因此它只是一个元素。

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

    IFS="
    "
    for line in $result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2013-11-20
      • 2014-07-31
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多