У меня есть код Bash следующим образом
python "$TM"
Проблема в том, что $ TM может быть любым символом, включая `символы. Когда $ TM имеет `abc`, bash пытается запустить abc как команду, прежде чем передать ей параметр для python.
Как я могу предотвратить это? Как я могу передать $ TM буквально без какой-либо интерпретации?
ДОБАВЛЕНО
Мне нужно больше объяснений.
Я использую TextMate Bundle Editer, чтобы bash вызывался с буфером ($ TM_SELECTED_TEXT или $ TM_CURRENT_LINE). Буфер - это выбор, который я сделал в редакторе TextMate. Код bash выглядит следующим образом.
#!/bin/bash
if [ -n "$TM_SELECTED_TEXT" ]; then
TM="$TM_SELECTED_TEXT"
else
if [ -n "$TM_CURRENT_LINE" ]; then
TM="$TM_CURRENT_LINE"
fi
fi
/usr/bin/python /Users/smcho/smcho/works/prgtask/textmate/repeat.py "$TM"
repeat.py выглядит следующим образом
import sys
inputString = sys.stdin.read().decode('utf-8')
inputString = inputString.rstrip().lstrip()
content = inputString[0:-2]
mark = inputString[-1]
r_num = len(content)
string = "%s\n%s" % (content, mark * r_num)
sys.stdout.write(string)
sys.exit(0)
Если ввод "abc: -", он преобразует строку в "abc \ n ---".
Проблема в том, что если вход содержит символ ``, bash оценивает его перед отправкой в код Python в качестве параметра.