假设我们需要将一些参数传递给shell命令.(让我们假设一个Bourne兼容shell.)
例如,假设我们要He said "It's a boy"; sure使用echo(1)打印字符串.
当然,我们不能这样做:
s = [[He said "It's a boy"; sure]]
os.execute("echo " .. s)
Run Code Online (Sandbox Code Playgroud)
但以下工作正常:
s = [[He said "It's a boy"; sure]]
os.execute(("echo %q"):format(s))
Run Code Online (Sandbox Code Playgroud)
我的问题:您认为使用%q引用shell参数是否足够好?
我已经知道%q如果我们的参数包含换行符(它将转换为斜杠+换行符,这意味着shell将看不到任何字符;但至少它不会破坏命令)并不是很好.这是针对我们的一个案例.还有其他情况%q会让我们失望吗?