gpt4 book ai didi

python - 在 bash 脚本中使用反引号,将 python 脚本调用到变量中以前可以工作,但现在已损坏

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:11 26 4
gpt4 key购买 nike

我有一个为游戏编写的简单脚本。该脚本是从游戏用户主目录中的 ~/.profile 调用的,应该模拟假登录,在成功比较两个变量后运行另一个脚本。它工作了一段时间,然后突然停止工作。(编辑:当我的意思是它停止工作时,我并不是说我改变了一些东西,它把一切搞乱了,我的意思是它在一晚上没有碰它之后就停止了工作。)

#!/bin/bash

pause(){
read -p "Place [CARD] on scanner and press [ENTER] key..."
}

init(){
cat /etc/issue
pause
READ=`sudo ~/bin/Read.py`
CARD=`cat ~/var/keycode.txt`
if [ "$READ" == "$CARD" ]; then
~/bin/mmenu.sh
else
echo "Incorrect... Please try again"
fi
}

while true
do
init
done

我做错了什么?提前致谢。

编辑:Read.py的输出是12345,cat keycode.txt的输出是12345然而,它似乎无法让它们正确比较。

该脚本已被简化,Read.py 不打印,只是将其内容写入名为 rcard.txt 的文件,两个变量如下所示:

CARD=`cat ~/var/kcard.txt`
READ=`cat ~/var/rcard.txt`

尽我所能,即使使用 [ "$READ"== "$CARD"],它仍然无法通过 if 语句。即使内容完全相同。实在是没看懂。

最佳答案

这里有一些可能的错误来源,这取决于您的错误消息是什么(如果您收到错误消息)。 sudo ~/bin/Read.py 可能会返回多个由空格分隔的文本单词,这会导致如下错误:

$ foo=hello world
$ bash: world: command not found

cat ~/var/keycode.txt 也可能发生同样的错误。为了避免这种潜在的错误,即使这不是您收到的错误,我也会将您的反引号括在引号中,如下所示:

    READ="`sudo ~/bin/Read.py`"
CARD="`cat ~/var/keycode.txt`"
<小时/>

如果您没有收到错误消息,但当您输入正确的内容时代码不起作用,我会检查文件 ~/bin/Read.py~/var/keycode.txt 并查看您是否可以在那里识别您的问题 - 两者之一可能会出现不一致,从而导致 Uncaught Error 。

如果您能提供有关您的程序如何“突然停止工作”的更多说明,那将会很有用。

关于python - 在 bash 脚本中使用反引号,将 python 脚本调用到变量中以前可以工作,但现在已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52921166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com