You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
435 B
20 lines
435 B
2 years ago
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import re
|
||
|
|
||
|
|
||
|
_find_unsafe = re.compile(r'[^\w@%+=:,./-]').search
|
||
|
|
||
|
|
||
|
def quote(s):
|
||
|
"""Return a shell-escaped version of the string *s*."""
|
||
|
if not s:
|
||
|
return "''"
|
||
|
if _find_unsafe(s) is None:
|
||
|
return s
|
||
|
|
||
|
# use single quotes, and put single quotes into double quotes
|
||
|
# the string $'b is then quoted as '$'"'"'b'
|
||
|
return "'" + s.replace("'", "'\"'\"'") + "'"
|