首页 > 解决方案 > 使用 wsl 运行多个命令

问题描述

我的主文件夹中有一些脚本,我想从命令行运行,实际上是从任务调度程序运行,但我找不到这样做的方法。

我努力了

wsl -u Ubuntu -u jlanza "cd /home/jlanza/bin && ./myscript && ./myotherscript"

但它不起作用。

如何在同一会话下连接多个命令的执行?

标签: windows-subsystem-for-linux

解决方案


您需要将这些命令不带引号传递给 WSL,以便 bash 将它们正确解释为一系列链接在一​​起的命令,而不是单个长命令。不幸的是,当你这样做时,'&&' 运算符会被 Windows 命令行解释器解释,并且下面的命令不会传递给 WSL。

我发现的工作是将'&&'(仅当前面的命令成功退出时才运行命令)运算符替换为简单的';' (无论前面的命令如何退出,都运行命令)。那么,在你的情况下,这样的事情应该可以工作:

cmd /c "wsl -u Ubuntu -u jlanza cd /home/jlanza/bin; ./myscript; ./myotherscript"

但是,如果您的用例需要使用“&&”运算符,我会尝试将您正在运行的命令保存为 WSL 中的脚本或 shell 别名。调用它可以省去通过 Windows 命令行解释器传递 '&&' 的需要。


推荐阅读