For 循环中的表达式问题 - Bash
Issue with Expression in For Loop - Bash
我正在尝试遍历服务器列表,而不是在文本文件中手动输入每个服务器,我想使用一个表达式。
示例:
[user@server001 ~]$ for i in server{001..010} ; do echo $i ; done
server001
server002
server003
server004
server005
server006
server007
server008
server009
server010
这产生了想要的结果。但是,当我将 server{001..010} 放入 .txt 文件并尝试做同样的事情时,它不起作用:
[user@server001 ~]$ cat server_test2.txt
server{001..010}
[user@server001 ~]$ for i in `cat server_test2.txt` ; do echo $i ; done
server{001..010}
如您所见,它实际上并没有按照我希望的方式处理表达式。
有什么想法可以使用表达式方法从具有多行服务器的 txt 文件中进行推断吗? {001..010}
你可以使用 eval;像这样:
list=$(cat server_test2.txt)
CMD="for i in $list ; do echo $i; done"
eval $CMD
我正在尝试遍历服务器列表,而不是在文本文件中手动输入每个服务器,我想使用一个表达式。
示例:
[user@server001 ~]$ for i in server{001..010} ; do echo $i ; done
server001
server002
server003
server004
server005
server006
server007
server008
server009
server010
这产生了想要的结果。但是,当我将 server{001..010} 放入 .txt 文件并尝试做同样的事情时,它不起作用:
[user@server001 ~]$ cat server_test2.txt
server{001..010}
[user@server001 ~]$ for i in `cat server_test2.txt` ; do echo $i ; done
server{001..010}
如您所见,它实际上并没有按照我希望的方式处理表达式。
有什么想法可以使用表达式方法从具有多行服务器的 txt 文件中进行推断吗? {001..010}
你可以使用 eval;像这样:
list=$(cat server_test2.txt)
CMD="for i in $list ; do echo $i; done"
eval $CMD