我有一个简单的bash脚本
check_repo() {
if cat /etc/apt/sources.list | grep "deb https://http.kali.org/kali kali-rolling main contrib non-free" || cat /etc/apt/sources.list | grep "deb https://http.kali.org/kali kali-rolling main non-free contrib"
then
return 0
else
return 1
fi
}
check_repo
这个脚本检查sources.list文件是否存在一个特定的回购,然后返回0,如果不存在,则返回1,但是当我使用python3调用脚本check = os.system("bash myscript.sh")
时,但是当我打印变量“ check”时可打印256
为什么会给出输出?我该如何解决?
提前谢谢你的回答
这就是os.system()
回报;在类Unix系统上,高8位是结果代码,低8位是信号(如果没有信号,则为0)。
在Python中执行此操作的正确方法是
check = False
with open("/etc/apt/sources.list") as repo:
for line in repo:
if "deb https://http.kali.org/kali kali-rolling main contrib non-free" \
in line or "deb https://http.kali.org/kali kali-rolling main non-free contrib" \
in line:
check = True
break
在shell脚本中执行此操作的正确方法是
if grep -q -e "deb https://http\.kali\.org/kali kali-rolling main contrib non-free" -e "deb https://http\.kali\.org/kali kali-rolling main non-free contrib" /etc/apt/sources.list
then ...
(或重构为grep -E
与单个正则表达式一起使用以覆盖两个表达式;请参见下文,以进行尝试)。
如果要将其放在函数中,则从的退出状态grep
将为0或1,因此return
除此以外无需另外进行任何操作。
从Python脚本调用此代码的正确方法是
import subprocess
check = subprocess.check_call(['grep', '-q', '-E',
r'deb https://http\.kali\.org/kali kali-rolling main( contrib| non-free){2}',
'/etc/apt/sources.list'])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句