相关疑难解决方法(0)

983
推荐指数
17
解决办法
68万
查看次数

如何在Unix控制台或Mac终端上运行shell脚本?

我知道了,忘了它并重新学习它.是时候把它写下来了.

unix linux macos bash shell

496
推荐指数
5
解决办法
84万
查看次数

如何逃避os.system()调用?

使用os.system()时,通常需要将作为参数传递的文件名和其他参数转义为命令.我怎样才能做到这一点?优选地,可以在多个操作系统/壳上工作但特别是用于bash的东西.

我目前正在做以下操作,但我确定必须有一个库函数,或者至少是一个更优雅/更健壮/更有效的选项:

def sh_escape(s):
   return s.replace("(","\\(").replace(")","\\)").replace(" ","\\ ")

os.system("cat %s | grep something | sort > %s" 
          % (sh_escape(in_filename), 
             sh_escape(out_filename)))
Run Code Online (Sandbox Code Playgroud)

编辑:我接受了使用引号的简单答案,不知道为什么我没有想到这一点; 我猜是因为我来自Windows,其中'和'的表现略有不同.

关于安全性,我理解这个问题,但是,在这种情况下,我对os.system()提供的快速简单的解决方案感兴趣,并且字符串的来源要么不是用户生成的,要么至少是由用户输入的.可信用户(我).

python shell escaping

114
推荐指数
5
解决办法
9万
查看次数

标签 统计

shell ×3

python ×2

bash ×1

escaping ×1

linux ×1

macos ×1

shebang ×1

unix ×1