比较变量与字符串python从bash scrip重定向时不工作

2024-09-29 19:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我将向您展示bash和python脚本(它们都位于mac上的/bin目录中):

{cdbash}脚本(bash}):

#! /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):

^{pr2}$

bash脚本接受用户的输入,将其存储在名为USER_INPUT.txt的临时文件中,并检查它是否正确运行。如果没有,则调用esh_2(python脚本),该脚本读取USER_INPUT.txt文件,接受用户的输入。然后检查它是否等于字符串"List contents"。如果是,则将"ls"写入文本文件。然后关闭文件。然后bash文件搜索存储在文本文件中的命令(将来我将使它作为命令运行)。然后脚本再次开始。在

问题是当我在shell中输入"List contents"时,它不起作用,因此打印"Didn't work"。但是,如果我自己进入文本文件并编写"List contents",python脚本会工作并将"ls"写入文本文件。我不知道为什么会这样。我很乐意在这件事上提供任何帮助。在

谢谢, b3n公司


Tags: 文件to用户echotxt脚本bashinput
1条回答
网友
1楼 · 发布于 2024-09-29 19:35:58

read()文件时,字符串中可能会出现一个换行符'\n'。试试吧

if UserInput.strip() == 'List contents':

或者

^{pr2}$

另请注意,您的第二个文件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"

相关问题 更多 >

    热门问题