[英]Comparing a variable with a string python not working when redirecting from bash script
首先,我将向您展示bash和python脚本(都在我的Mac的/bin
目录中):
bash脚本( esh_1
):
#! /bin/bash
echo -n "Enter bash or natural-language command: "
read INPUT
echo $INPUT > ~/USER_INPUT.txt
$INPUT
if (( $? )); then echo Redirected to Python Script; esh_2; cat ~/USER_INPUT.txt; else echo Did not redirect to Python Script; fi
esh_1
python脚本( esh_2
):
#! /usr/bin/python2.7
with open('/Users/bendowling/USER_INPUT.txt', 'r') as UserInputFile:
UserInput = UserInputFile.read()
UserInputFile = open('/Users/bendowling/USER_INPUT.txt', 'w+')
if UserInput == 'List contents':
UserInputFile.write("ls")
else:
print "Didn't work"
UserInputFile.close()
bash脚本接收用户的输入,将其存储在名为USER_INPUT.txt
的临时文件中,然后检查其是否正常运行。 如果没有,它将调用esh_2
(Python脚本),该文件将读取USER_INPUT.txt
文件,并接受用户的输入。 然后,它检查它是否等于字符串"List contents"
。 如果是,则将"ls"
写入文本文件。 然后关闭文件。 然后,bash文件将存储在文本文件中的命令编入目录(以后,我将使其作为命令运行)。 然后,脚本再次开始。
问题是,当我在外壳中输入"List contents"
,它不起作用,因此打印了"Didn't work"
。 但是,如果我自己进入文本文件并编写"List contents"
,则python脚本将工作并将"ls"
写入文本文件。 我不知道为什么会这样。 我很高兴在这个问题上有任何帮助。
谢谢,b3n
当您read()
文件时,您的字符串中可能会得到换行符'\\n'
。 尝试之一
if UserInput.strip() == 'List contents':
要么
if 'List contents' in UserInput:
还要注意的是你的第二个文件open
也可以使用with
:
with open('/Users/.../USER_INPUT.txt', 'w+') as UserInputFile:
if UserInput.strip() == 'List contents': # or if s in f:
UserInputFile.write("ls")
else:
print "Didn't work"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.