【问题标题】:bash scripting - how to effectively iterate a key-value pair list in a text file to load a variable [duplicate]bash脚本 - 如何有效地迭代文本文件中的键值对列表以加载变量[重复]
【发布时间】:2017-05-21 21:18:21
【问题描述】:

迭代此列表的最佳方法是什么? (键由“:”值分隔并由新行分隔)

我有一个在文本文件中包含这些值的文件:

cl1:AbC!123
cl2:EfF{3201p
cl3:Zrq12@1q5t

基本上是:key:value

我有一个需要执行的功能(一次一个) 对于列表中的每个key:value

地点:

key=clnmbr
value=pw

功能:

myfunction()
  {
   mycount=$(PGPASSWORD=${pw} psql -h myhost-1-${clnmbr}.com -U masteruser -d dev -p 5439 -t -c "select count(datname) from pg_database;")
}

所以基本上我想遍历列表中的每一行并执行我的函数。最好的方法是什么?

谢谢。

【问题讨论】:

  • 顺便说一句,我几乎可以肯定你在描述什么是倒退。你说它是key:value 和key=pw,但关键是cl1 或cl2——不是一个好的密码——而且这个值看起来更像是密码。

标签: arrays bash unix for-loop


【解决方案1】:
while IFS=: read -r clnmbr pw; do
  myfunction
done

【讨论】:

  • 好的,有点理解,但是我如何将它作为文件读入呢?像这样的东西会起作用吗? while IFS=: read -r < "myfile.lst"?
  • 你想把< "myfile.lst"放在done之后,以重定向整个列表——如果你把它放在read之后,它只会重读第一个一遍又一遍地排队。
  • 知道了。有用。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 2018-05-23
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多