以下内容将从外部文件中读取并输出数据:
#!/bin/bash
while IFS='|' read hostname nickname; do
echo $hostname $nickname
done < "list.dat"
list.dat文件是:
firstserver|joe
secondserver|henry
thirdserver|jack
但我想将list.dat实际存储在脚本本身(不是外部),但不知道如何将其作为变量/数组引用并从中读取相同的结果。 ..
答案 0 :(得分:6)
尝试使用here document:
#!/bin/bash
while IFS='|' read hostname nickname; do
echo $hostname $nickname
done <<LIMIT
firstserver|joe
secondserver|henry
thirdserver|jack
LIMIT
答案 1 :(得分:2)
Here strings根据我的意愿传递变量或字符串:
#!/bin/bash
input="firstserver|joe
secondserver|henry
thirdserver|jack"
while IFS='|' read hostname nickname; do
echo $hostname $nickname
done <<< "$input"
答案 2 :(得分:2)
如果您可以使用bash 4,我会使用关联数组:
declare -A servers=(
["firstserver"]=joe
["secondserver"]=henry
…
)
for hostname in "${!servers[@]}"; do
echo "$hostname" "${servers[$hostname]}"
done
这假定主机名是唯一的。