Почему переменная env не установлена, когда точка входа находится в состоянии эхо при запуске Docker?

Исходя из того факта, что вы хотите использовать его с уценкой (Pandoc), насколько я могу видеть из комментария к блогу , где вы ссылались на этот вопрос , я бы также предложил попробовать my pander package :

> library(pander)
> panderOptions('decimal.mark', ',')
> panderOptions('table.split.table', Inf)
> pander(head(iris))

-------------------------------------------------------------------
 Sepal.Length   Sepal.Width   Petal.Length   Petal.Width   Species 
-------------- ------------- -------------- ------------- ---------
     5,1            3,5           1,4            0,2       setosa  

     4,9             3            1,4            0,2       setosa  

     4,7            3,2           1,3            0,2       setosa  

     4,6            3,1           1,5            0,2       setosa  

      5             3,6           1,4            0,2       setosa  

     5,4            3,9           1,7            0,4       setosa  
-------------------------------------------------------------------

Или PHP Markdown Дополнительный синтаксис для упрощения использования с помощью knitr:

> pandoc.table(head(iris), style = 'rmarkdown')


|  Sepal.Length  |  Sepal.Width  |  Petal.Length  |  Petal.Width  |  Species  |
|:--------------:|:-------------:|:--------------:|:-------------:|:---------:|
|      5,1       |      3,5      |      1,4       |      0,2      |  setosa   |
|      4,9       |       3       |      1,4       |      0,2      |  setosa   |
|      4,7       |      3,2      |      1,3       |      0,2      |  setosa   |
|      4,6       |      3,1      |      1,5       |      0,2      |  setosa   |
|       5        |      3,6      |      1,4       |      0,2      |  setosa   |
|      5,4       |      3,9      |      1,7       |      0,4      |  setosa   |

0
задан Jim 18 January 2019 в 15:58
поделиться

1 ответ

Первый случай

docker run -it -e "name=JD" --entrypoint 'echo' ubuntu 'Hello $name'

Одиночная кавычка всегда препятствует расширению переменной. Все, что вы пишете в одинарных кавычках, остается неизменным. Попробуйте echo '$PWD' в своем терминале, и вы увидите $PWD в качестве выхода. Попробуйте echo "$PWD", и вы получите распечатанный рабочий каталог.

Второй случай

docker run -it -e "name=JD" --entrypoint 'echo' ubuntu "Hello $name"

Ваш код расширяется до запуска Docker. Ваша оболочка раскрывает всю строку и затем выполняет ее. В этот момент вы не объявили $name и получили его пустым. Это означает, что внутри контейнера вы получаете команду "Hello ", а не "Hello $name".

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

Третий случай, я думаю, очевиден и не нуждается в объяснении.

0
ответ дан grapes 18 January 2019 в 15:58
поделиться
Другие вопросы по тегам:

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