Запись команд в файл из сценария оболочки

Если вы хотите использовать tlmgr на Ubuntu, у вас есть в основном два варианта:

Установите texlive с нуля и создайте фиктивный пакет. Используйте install-tl-ubuntu, как описано в этом ответе на tex. SE
1
задан 6 June 2017 в 16:39

6 ответов

Вы также можете вывести $:

\$(...)
\$

в свой код:

cat > .git/hooks/pre-commit << EOM
#Colors
RED='\033[0;31m'
NC='\033[0m' # No Color

# Javascript unit tests 
res=\$(script -q /dev/null ./tests/hooks/non-ui-test-hook )
RESULT=\$?
[ $RESULT -ne 0 ] && echo -e "$res" && exit 1
echo -e "All test cases passed.\n"
exit 0
EOM
4
ответ дан 22 May 2018 в 21:49
  • 1
    он решил проблему, спасибо. У меня есть еще одна проблема. Я использую команду res=$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js")) для запуска моих тестовых примеров и получения выходных команд, но возвращает только последнюю строку результата тестового примера. – chandil03 8 June 2017 в 08:27
  • 2
    Ваш вопрос немного нечеткий для меня :) спросите, как другой вопрос предоставляет более подробную информацию о выходе, который вы хотите, и о выходе, который вы получите, чтобы все больше людей могли вам помочь ...;) – Ravexina 8 June 2017 в 11:34
  • 3
    Escape И укажите переменные. [F1] – Sergiy Kolodyazhnyy 8 June 2017 в 18:31

Вы также можете вывести $:

\$(...) \$

в свой код:

cat > .git/hooks/pre-commit << EOM #Colors RED='\033[0;31m' NC='\033[0m' # No Color # Javascript unit tests res=\$(script -q /dev/null ./tests/hooks/non-ui-test-hook ) RESULT=\$? [ $RESULT -ne 0 ] && echo -e "$res" && exit 1 echo -e "All test cases passed.\n" exit 0 EOM
4
ответ дан 18 July 2018 в 12:04

Вы также можете вывести $:

\$(...) \$

в свой код:

cat > .git/hooks/pre-commit << EOM #Colors RED='\033[0;31m' NC='\033[0m' # No Color # Javascript unit tests res=\$(script -q /dev/null ./tests/hooks/non-ui-test-hook ) RESULT=\$? [ $RESULT -ne 0 ] && echo -e "$res" && exit 1 echo -e "All test cases passed.\n" exit 0 EOM
4
ответ дан 24 July 2018 в 19:54

Введите конечный индикатор документа, EOM в вашем случае:

cat > .git/hooks/pre-commit << 'EOM'
...
...
EOM

Выполнение с использованием двойных кавычек или обратной косой черты:

cat > .git/hooks/pre-commit << "EOM"
...
...
EOM

Или

cat > .git/hooks/pre-commit << \EOM
...
...
EOM

Возможно, вы не заметили, но RESULT=$? также расширился до RESULT=1, т.е. статус выхода script... внутри подстановки команды.

Просто для полноты, если вы хотите, чтобы какое-то расширение произошло, но не другие, вам нужно следить за тем, что у вас есть, и избегать тех, которые вы хотите сохранить, с помощью типичных методов экранирования.

2
ответ дан 22 May 2018 в 21:49

Введите конечный индикатор документа, EOM в вашем случае:

cat > .git/hooks/pre-commit << 'EOM' ... ... EOM

Выполнение с использованием двойных кавычек или обратной косой черты:

cat > .git/hooks/pre-commit << "EOM" ... ... EOM

Или

cat > .git/hooks/pre-commit << \EOM ... ... EOM

Возможно, вы не заметили, но RESULT=$? также расширился до RESULT=1, т.е. статус выхода script... внутри подстановки команды.

Просто для полноты, если вы хотите, чтобы какое-то расширение произошло, но не другие, вам нужно следить за тем, что у вас есть, и избегать тех, которые вы хотите сохранить, с помощью типичных методов экранирования.

2
ответ дан 18 July 2018 в 12:04

Введите конечный индикатор документа, EOM в вашем случае:

cat > .git/hooks/pre-commit << 'EOM' ... ... EOM

Выполнение с использованием двойных кавычек или обратной косой черты:

cat > .git/hooks/pre-commit << "EOM" ... ... EOM

Или

cat > .git/hooks/pre-commit << \EOM ... ... EOM

Возможно, вы не заметили, но RESULT=$? также расширился до RESULT=1, т.е. статус выхода script... внутри подстановки команды.

Просто для полноты, если вы хотите, чтобы какое-то расширение произошло, но не другие, вам нужно следить за тем, что у вас есть, и избегать тех, которые вы хотите сохранить, с помощью типичных методов экранирования.

2
ответ дан 24 July 2018 в 19:54

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

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