Да кажем, че трябва да предадем някакъв аргумент на команда на shell. (Да приемем черупка, съвместима с Bourne.)
Например, да кажем, че искаме да отпечатаме низа He said "It's a boy"; sure
с помощта на echo(1).
Естествено, не можем да го направим по този начин:
s = [[He said "It's a boy"; sure]]
os.execute("echo " .. s)
Но следното работи добре:
s = [[He said "It's a boy"; sure]]
os.execute(("echo %q"):format(s))
Моят въпрос: Смятате ли, че използването на %q за цитиране на аргументи на обвивката е достатъчно добро?
Вече знам, че %q
не е много добър, ако аргументът ни включва нов ред (той ще бъде преобразуван в наклонена черта+нов ред, което би означавало, че обвивката няма да вижда символ; но поне няма да наруши командата). Така че това е едно дело срещу нас. Има ли други случаи, в които %q
ще ни провали?