我创建了一个 python 文件,它告诉文件夹中的每个 .java 文件,您可以选择要执行哪个 java 文件,然后将所选 java 文件的名称写入名为 Input.txt 的文件中,但我无法在 shell 中读取该文件:
我的Python文件:
import glob, os
import sys
a=sys.path
count=0
os.chdir(a[0])
ifile=open("Input.txt","w")
i=1
for file in glob.glob("*.java"):
if(count%2==0):
print(i,".",file,end="")
g=str(i)
l=len(file)+len(g)
else:
print("".rjust(40-l,' '),i,".",file)
i=i+1
count=count+1
print("")
flag=1
while flag==1:
f=int(input("Enter The File No. You Want To Execute:"))
i=1
for file in glob.glob("*.java"):
if(i==f):
flag=0
x=file
break
i=i+1
if flag==1:
print("File Not Found!!\nPlease Enter Again:")
ifile.write(x)
ifile.close()
外壳文件如下所示:
#!/bin/bashs
echo WELCOME TO EXECUTOR
echo Garvit Joshi\([email protected]\)
echo USER:$USERNAME
python3 Filename_java.py
filename="Input.txt"
while IFS= read -r line
do
echo "$line"
done <"$filename"
exit
答案1
请不要经过python文件的算法。它工作正常。
嗯,是的 - 但实际上不是。它写入文件名的字符,但不以换行符终止字符串。
shell 的read
命令期望读取完整的行,如果没有读取,则返回非零退出状态。因此while IFS= read -r line
不执行循环体。
您应该修改您的 python 代码以编写终止换行符,或者修改您的 shell 代码以便循环体也测试非空行:
while IFS= read -r line || [[ -n $line ]]; do ...