String Bash把所有事情都放在同一条线上?

String Bash把所有事情都放在同一条线上?,string,bash,shell,String,Bash,Shell,我整个上午都在做这件事,运气不好。我需要的结果都在一行逗号分隔。有些部分效果很好,但一旦我添加了read,就会感觉很不一样 INPUT=steamIPs.csv OLDIFS=$IFS IFS=, [ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } while read router contact address do myvar="$ip $router

我整个上午都在做这件事,运气不好。我需要的结果都在一行逗号分隔。有些部分效果很好,但一旦我添加了read,就会感觉很不一样

INPUT=steamIPs.csv
   OLDIFS=$IFS
   IFS=,
   [ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
   while read router contact address
   do 
   myvar="$ip 
   $router
   $contact
   $address"
   echo "$myvar" | paste -s -d',' 
   OUTPUT=`snmpget $ip  -c public -v 1 sysuptim`    
   echo ${OUTPUT#*:} | tr -d ' '
   done < $INPUT 
   IFS=$OLDIFS
INPUT=steamIPs.csv
OLDIFS=$IFS
如果=,
[!-f$INPUT]&&&{echo“$INPUT文件未找到”;退出99;}
读取路由器联系地址时
做
myvar=“$ip
$router
$contact
$address“
回显“$myvar”|粘贴-s-d','
OUTPUT=`snmpget$ip-cpublic-v1系统运行时间`
echo${OUTPUT#*:}| tr-d''
完成<$INPUT
IFS=$OLDIFS

你工作太辛苦了:

if [[ ! -f "$INPUT" ]]; then
    echo "$INPUT file not found"
    exit 99
fi

while IFS=, read -r router contact address; do 
    myvar="$ip,$router,$contact,$address"
    echo "$myvar"
done < "$INPUT"
if[!-f“$INPUT”];然后
回显“$未找到输入文件”
99号出口
fi
当IFS=,read-r路由器联系地址;做
myvar=“$ip,$router,$contact,$address”
echo“$myvar”
完成<“$INPUT”

有关输入外观和预期输出的更多信息将受到赞赏同意更多信息。此外,IFS和OLDIFS变量肯定需要加引号:OLDIFS=“$IFS”和IFS=“$OLDIFS”不要让我们猜测您所需的输出格式。请更新问题以包括示例输入(来自$INPUT的1行),以及$OUTPUT中的内容,然后是您期望这2个输入作为输出的样子。祝你好运。这可能是一艘awk 1-liner。请参阅,并用您的
snmpget…
替换
date
。祝你好运。谢谢你的时间,很抱歉没有提供更多信息。输出应该是这样的,但都在一行:172.0.0.1,鲍勃,Bob@gmail.comThanks,这看起来是可行的,但回报太长了。