为什么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
答案 0 :(得分:0)
声明:
for line in $result
在$result
上执行分词,以获取$line
应设置的每个元素。单词拆分使用$IFS
中的分隔符。在脚本的前面,您将其设置为,
。所以这个循环将迭代$result
中逗号分隔的数据。由于其中没有任何逗号,因此它只是一个元素。
如果您想按行拆分,请执行以下操作:
IFS="
"
for line in $result