скрипт tmux с кавычками - PullRequest
       59

скрипт tmux с кавычками

0 голосов
/ 27 марта 2020

Я использую скрипт tmux в bash, который имеет следующий код:

tmux send-keys -t d4 'tmux send-keys -t "server1 tail -F /var/log/file.log | grep --line-buffered keyword | egrep --line-buffered "Two keywords" | /root/another_app" ENTER' ENTER

Когда строка передается в tmux, "Two keywords" преобразуется в Twokeywords.

Я пытался избежать кавычек, но безрезультатно.

То же самое происходит и с более сложной строкой:

tmux send-keys -t d4 'tmux send-keys -t server2 "tail -F /var/log/file2.json | grep --line-buffered -a '"event_type":"keyword"' | /root/another_app" ENTER' ENTER

Также не повезло в экранирование кавычек.

Моя цель - отправить первую строку в tmux как:

tail -F /var/log/file.log | grep --line-buffered keyword | egrep --line-buffered "Two keywords"

, а вторую строку как

tail -F /var/log/file2.json | grep --line-buffered -a '"event_type":"keyword"'

1 Ответ

0 голосов
/ 27 марта 2020

, пожалуйста, попробуйте это:

tmux send-keys -t d4 'tmux send-keys -t "server1 tail -F /var/log/file.log | grep --line-buffered keyword | egrep --line-buffered '"'Two keywords'"' | /root/another_app" ENTER' ENTER

, потому что:

echo 'tmux send-keys -t "server1 tail -F /var/log/file.log | grep --line-buffered keyword | egrep --line-buffered '"'Two keywords'"' | /root/another_app" ENTER'
tmux send-keys -t "server1 tail -F /var/log/file.log | grep --line-buffered keyword | egrep --line-buffered 'Two keywords' | /root/another_app" ENTER

Вы уверены, что с двумя ENTER в конце?

Для второго вы можете использовать здесь документ, чтобы присвоить свой специальный параметр tmux переменной, а затем вызвать ваш tmux с этой переменной:

var=$(cat <<SETVAR
'tmux send-keys -t server2 "tail -F /var/log/file2.json | grep --line-buffered -a '"event_type":"keyword"' | /root/another_app" ENTER'
SETVAR
)
echo "$var"
'tmux send-keys -t server2 "tail -F /var/log/file2.json | grep --line-buffered -a '"event_type":"keyword"' | /root/another_app" ENTER'

, поэтому попробуйте

var=$(cat <<SETVAR
'tmux send-keys -t server2 "tail -F /var/log/file2.json | grep --line-buffered -a '"event_type":"keyword"' | /root/another_app" ENTER'
SETVAR
)
tmux send-keys -t d4 "$var" ENTER
...