【发布时间】:2018-10-17 06:33:51
【问题描述】:
上下文: 我正在尝试为docker exec 命令的日常使用编写一个快捷方式。由于某些原因,我正在尝试在容器内使用 bash 控制台时输出有时会中断的问题(历史混乱,行在我写作时相互覆盖,...)
我读到here,您可以通过在启动 bash 控制台之前添加一些命令来解决这个问题。
这是我的脚本的相关摘录
#!/bin/bash
containerHash=$1
commandToRun='bash -c "stty cols $COLUMNS rows $LINES && bash -l"'
finalCommand="winpty docker exec -it $containerHash $commandToRun"
echo $finalCommand
$finalCommand
这是我得到的输出:
winpty docker exec -it 0b63a bash -c "stty cols $COLUMNS rows $LINES && bash -l"
cols: -c: line 0: unexpected EOF while looking for matching `"'
cols: -c: line 1: syntax error: unexpected end of file
我读到here 这与解析和扩展有关。但是,我不能使用函数或eval 命令(或者至少我没有成功使它工作)。
如果我直接在终端中执行第一行输出,它就可以正常工作。
我该如何克服这个问题?
【问题讨论】:
-
一些技巧可以在mywiki.wooledge.org/BashFAQ/050找到
-
@EricRenouf 谢谢!我已经在我的研究中偶然发现了这一点,但似乎找不到适用于我的案例的段落......你看到合适的段落了吗? (可能是第三部分,但我不太明白)
-
您是否考虑过将参数存储在数组而不是字符串中的初始部分?此外,
COLUMNS或LINES是否可能包含意外的换行符或类似的东西?也许那些也应该被引用? -
我尝试用硬编码值替换
COLUMNS和LINES但没有帮助。你会把哪一部分写成数组?如果我接受命令并直接在终端中执行它,它就可以工作,这就是我没有得到的
标签: bash docker docker-exec