String Bash把所有事情都放在同一条线上?
我整个上午都在做这件事,运气不好。我需要的结果都在一行逗号分隔。有些部分效果很好,但一旦我添加了read,就会感觉很不一样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
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,这看起来是可行的,但回报太长了。