登录
首页 >  Golang >  Go问答

将波浪号展开到主目录

来源:Golang技术栈

时间:2023-03-23 15:37:02 483浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《将波浪号展开到主目录》,就很适合你!文章讲解的知识点主要包括golang,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我有一个程序接受将在其中创建文件的目标文件夹。我的程序应该能够处理绝对路径和相对路径。我的问题是我不知道如何扩展~到主目录。

我扩展目的地的功能如下所示。如果给定的路径是绝对路径,则它什么也不做,否则它将相对路径与当前工作目录连接起来。

import "path"
import "os"

// var destination *String is the user input

func expandPath() {
        if path.IsAbs(*destination) {
                return
        }
        cwd, err := os.Getwd()
        checkError(err)
        *destination = path.Join(cwd, *destination)
}

由于path.Join不展开,如果用户传递类似目的地的~东西,它就不起作用。~/Downloads

我应该如何以跨平台的方式解决这个问题?

正确答案

通常,在您的程序看到它 之前~,shell 会扩展它。 以与 shell 扩展机制兼容的方式调整程序从命令行获取参数的方式。 __

可能的问题之一是像这样使用exec.Command

cmd := exec.Command("some-binary", someArg) // say 'someArg' is "~/foo"

这不会得到扩展。例如,您可以改用:

cmd := exec.Command("sh", "-c", fmt.Sprintf("'some-binary %q'", someArg))

这将从外壳中获得标准~扩展。

编辑:修复了“sh -c”示例。

今天关于《将波浪号展开到主目录》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表