我有一个包含几个单词的文件,如:
server1 location1
server2 location2
我需要在while循环中传递它们。
我们如何将它们分配给两个独立的变量?这样的事情可能是
while read server,location
do
echo $server is in $location
done <file
我能够很好地使用1变量,但无法弄清楚这个。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您需要在变量之间使用空格,而不是逗号:
while read -r server location
do
echo "${server}" is in "${location}"
done <file
请注意,第一个字将被读入server
和&#34;其他所有内容&#34;将进入location
。因此,如果您的文件恰好包含两个以上的单词,那么您可能希望忽略其余的 dummy 变量:
while read -r server location dummy
do
echo "${server}" is in "${location}"
done <file
答案 1 :(得分:1)
我对shell脚本有点生疏,所以我怀疑这是最好的方法,但你可以这样做:
set $(cat file)
while [ $# -gt 0 ]
do
echo $1 is in $2
shift 2
done
另一种方法是使用awk
:
awk '{for (i=1; i<NF; i+=2) printf "%s is in %s\n", $i, $(i+1);}' file