目前正在重构一些旧代码,并希望将一些bash脚本转换为python。
我们用bash编写了一小部分功能,类似于:
var1=$1
var2=$2
var3=$3
while read var1 var2 var3; do
logic
老实说,我不确定我明白这是在做什么。我以前在文件的上下文中见过while read循环,但我不确定这里用这3个变量而不是文件发生了什么。
我想先了解一下这个while read到底在做什么,但是我没能在网上找到很多资源来解释变量上下文中的这个逻辑,我所看到的都是迭代实际文件的while read循环。
最后,我希望将此功能转换为python。对于类似Python功能的任何建议都将受到赞赏(仍然是Python的新手),但希望如果我能首先掌握上面的逻辑,我应该能够自己找到一些东西。
如果需要,可以提供有关while循环中逻辑的更多上下文:)
如有任何帮助,不胜感激
bash
脚本从标准输入中读取每行,将其分成单词,并将单词分配给var1
,var2, and
var3in order. It loops until
read '返回错误,通常发生在EOF。
大致等价的python代码是:
while True:
try:
var1, var2, var3 = input().split(maxsplit=2)
except EOFError:
break
# logic
maxsplit=2
将使split()
最多返回3个值。如果输入的单词超过3个,则所有剩余的单词将包含在最后一个单词中。这类似于read
在输入单词多于变量时的工作方式。
如果输入少于3个单词,Python版本将无法工作。bash
将给剩余的变量赋值一个空字符串,Python将报告一个错误。如果有必要,可以通过重新编码来解决这个问题。