bash: C:/Program: 没有这样的文件或目录

J W*_*ezy 2 bash curl apache-kafka debezium

我是 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'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

Phi*_*ppe 9

我昨天遇到了类似的问题,解决方案是在绝对路径之前添加反斜杠,例如:

cat debezium-sqlserver-init/inventory.sql | docker exec -i tutorial_sqlserver_1 bash -c '\/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
Run Code Online (Sandbox Code Playgroud)

\/opt/mssql-tools/bin/sqlcmd 阻止转换为 Windows 路径。

  • 啊!为了记录下来,我们需要 `bash -xc '...` (2认同)