读取Kotlin/Native中的环境变量

读取Kotlin/Native中的环境变量,kotlin,environment-variables,kotlin-native,Kotlin,Environment Variables,Kotlin Native,好的,我想创建一个本机应用程序来读取一些环境变量,并基于一些业务逻辑,将它们的值更改为其他值。我决定在科特林做这件事 通过创建函数,我设法找到了如何更改系统环境变量: fun call(arg: String) = platform.posix.system(command) fun setEnvironmentVariable(variable: String, value: String) { println("Changing value of $variable to $val

好的,我想创建一个本机应用程序来读取一些环境变量,并基于一些业务逻辑,将它们的值更改为其他值。我决定在科特林做这件事

通过创建函数,我设法找到了如何更改系统环境变量:

fun call(arg: String) = platform.posix.system(command)

fun setEnvironmentVariable(variable: String, value: String) {
    println("Changing value of $variable to $value")
    call("SETX $variable $value")
}
但它只会改变值。我想将其存储在Kotlin变量中,并对其进行一些操作

发出语句callSET$variable将值打印到命令提示符,但我不知道如何从Kotlin捕获它。我想,如果有一种方法可以将命令提示符的输出提取为字符串,这样会更容易,即使Windows以myvariable=myvalue的形式输出,而不仅仅是以值的形式输出


提前感谢

以下是如何在Kotlin/Native中读取环境变量:

import platform.posix.*
import kotlinx.cinterop.*

fun main() {
    val variable = "whatever..."
    println(getenv(variable)?.toKString())
}

要生成一个子进程来读取环境变量的值,就需要使用大锤敲开螺母。请参阅@DodgyCodeException System.getenv是Kotlin JVM,而不是nativeI。我看不出该页面如何包含此问题的任何答案。这里的答案建议要么利用System.getenv函数,我不能利用,因为我使用的是Kotlin Native,而不是JVM,要么使用第三方库进行配置,使用从多个源收集的属性-内置资源、系统属性、属性文件、环境变量、命令行参数,等等,这本身就是一把大锤。我可能遗漏了一些内容,因此如果是这种情况,并且链接页面实际上包含了对我的问题的修复,请告诉我。@KevinGalligan您是对的,对不起。您可以使用echo%$variable%而不是SET命令。这样您就不会得到variable=value模式,而只得到值本身。您还必须以某种方式将stdout重定向到Kotlin进程。但也许您最好使用C的互操作,然后您可以使用C的getenv调用。工作起来很有魅力。getenv$变量表示法是什么?getenvvariable似乎为我提供了与现有和不存在的系统变量相同的结果。@Mattias你是对的,这是不必要的。编辑。谢谢你的帮助。