Сценарий Bash добавляет переменную в файл

Я просто создал сценарий удара, и хотят добавить переменный сценарий, но он не работал правильно и здесь является сценарием:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Я пытался работать, добавляют этот сценарий с помощью эха, но результатами не является то же:

echo "export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'" > wew.txt

если мы cat wew.txt результат был:

export PROMPT_COMMAND='RETRN_VAL=0;logger -p local6.debug widianto [69]: echo "export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'" > wew.txt []'

Спасибо за помощь

3
задан 19 April 2018 в 12:27

2 ответа

Что Вы наблюдаете, вот то, что 'сильные кавычки' теряют свою силу при обертывании в "слабые кавычки":

$ echo $foo
bar
$ echo '$foo'
$foo
$ echo "echo '$foo'"
echo 'bar'

Хотя Вы могли исправить свой код выходом обратной косой черты каждый специальный символ, лучший способ избежать, чтобы расширение оболочкой могло бы быть должно использовать здесь-документ вместо echo, и кавычка (любым из поддерживаемых способов - слабый, сильный или обратная косая черта) маркер конца:

$ cat << \EOF
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
EOF

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
5
ответ дан 1 December 2019 в 15:33

Я имею успешно с созданной переменной:

widianto@rancher3:~$ cat b.bash
#!/bin/bash
# widianto

a="export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug"
b='"$(whoami) [$$]: $(history 1 | sed'
c='"s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'


echo "$a $b $c'" >> /home/widianto/test.txt

Спасибо

0
ответ дан 1 December 2019 в 15:33

Другие вопросы по тегам:

Похожие вопросы: