从命令行传递带有不同标点符号的字符串作为argv

时间:2017-10-24 19:32:59

标签: python bash

我想传递一个字符串 "('a','a');('a','!a');('a', '!d');('b', '!e');('c','a')" 从命令行。但我收到一个错误: -bash: syntax error near unexpected token '(\'

有没有办法,如何在不添加终端符号的情况下避免这种情况?(可能会指定一个标志)

另外,将\括号括起来并没有帮助 - 我应该在哪些字符前加上' \'在没有空格的字符串中?

2 个答案:

答案 0 :(得分:0)

Bash不会解释单引号内的字符串,所以如果你可以切换:

"('a','a');('a','!a');"

'("a","a");("a","!a");'

后面单引号内的双引号将起作用,你不必看着令人讨厌的逃脱。

答案 1 :(得分:0)

你可以使用ANSI-C quoting,但它看起来像地狱:

$ echo "('a','a');('a','!a');('a', '!d');('b', '!e');('c','a')"
bash: !a': event not found

$ echo $'(\'a\',\'a\');(\'a\',\'!a\');(\'a\', \'!d\');(\'b\', \'!e\');(\'c\',\'a\')'
('a','a');('a','!a');('a', '!d');('b', '!e');('c','a')