Mit $(OS) , wie in anderen Antworten dokumentiert, kann zwischen Windows_NT unterscheiden und Unix (das sowohl Linux als auch macOS umfasst), aber nicht zwischen verschiedenen Unix-ähnlichen Systemen. Wenn Sie MSBuild 15.3 oder höher verwenden (was sehr wahrscheinlich ist), sollten Sie die Verwendung von [MSBuild]::IsOsPlatform() in Erwägung ziehen :
<Exec Command="./foo.sh" Condition="$([MSBuild]::IsOSPlatform('Linux'))" />
Das Argument kann der Name eines beliebigen OsPlatform sein Mitglied.
Die Variable ist $(OS) , normalerweise geprüft, ob es Windows_NT ist oder nicht :
<Exec Command="./foo.sh" Condition=" '$(OS)' != 'Windows_NT' " />