背景:我正在尝试为我的日常使用docker exec
命令编写一个快捷方式。由于某些原因,当我在容器内使用bash控制台时,我的输出有时会出现问题(历史记录混乱,行覆盖等)。
我在这里阅读到这里的解决方法,可以通过在启动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
我在这里看到,这与解析和扩展有关。然而,我不能使用一个函数或eval
命令(或者至少我没有成功地使它工作)。
如果我直接在终端中执行第一行输出,它可以正常工作。
我该怎么解决这个问题?
COLUMNS
或LINES
是否可能包含意外的换行符或类似的内容?也许这些也应该加上引号? - Eric RenoufCOLUMNS
和LINES
替换为硬编码的值,但并没有帮助。你会将哪一部分作为数组来编写?如果我直接在终端中执行该命令,它可以正常运行,这是我不理解的地方。 - AdrienW