【发布时间】:2020-07-16 02:42:42
【问题描述】:
我是 Docker、Debezium、Bash 和 Kafka 的新手。我正在尝试在 Windows 10 上运行 MSSQL Server 的 Debezium 教程/示例:
https://github.com/debezium/debezium-examples/blob/master/tutorial/README.md#using-sql-server
我可以按照第一步启动拓扑。但是,当我转到第二步并执行以下命令时:
cat debezium-sqlserver-init/inventory.sql | docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
我收到以下错误:
bash: C:/Program: 没有这样的文件或目录
我不知道为什么它甚至会将C:/Program 拖入其中。我没有在命令中看到它,也没有在 *.sql 文件中看到它。有谁知道为什么会发生这种情况以及解决方法是什么?
注意1:我已经在这个命令应该可以运行的当前目录中,并且文件夹/文件路径中没有空格
注意 2:我在 Git Bash 中运行命令
当使用set -x记录命令的运行方式时,里面仍然没有C:/Program,如下日志所示:
$ cat debezium-sqlserver-init/inventory.sql | docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
+ cat debezium-sqlserver-init/inventory.sql
+ docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
bash: C:/Program: No such file or directory
【问题讨论】:
-
也闻起来像引用不足导致早期字符串拆分。
-
我尝试在
'debezium-sqlserver-init/inventory.sql'中添加单引号,但没有成功。 -
@JWeezy,两个单独的命令。
set -x是一个命令。运行它,按回车键,然后键入要为其收集日志的命令;运行set +x稍后关闭该注销。后续行仍会像以前一样运行(和失败),但在此之前,它们会打印一个日志,说明它们在做什么。 -
好的——我要求所有日志记录以便找到的两行代码是
+ cat debezium-sqlserver-init/inventory.sql和+ docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'——让我们知道参数列表在之后发生了变化 shell 开始尝试执行docker。为了追踪在那之后发生的事情,我们将bash -c更改为bash -xc,但既然我们已经得到了答案,那就不再需要了。 -
...至于
__git_ps1是怎么转的,那要看你当初是怎么配置的;它可以从您的BASH_COMMAND变量中调用,也可以是直接形成提示的PS1变量的一部分。这些不是唯一可能的钩子,但它们肯定是最有可能的。
标签: bash curl apache-kafka debezium