【问题标题】:Getting current path in variable and using it获取变量中的当前路径并使用它
【发布时间】:2010-12-10 19:37:39
【问题描述】:

我想提取变量中的当前路径并稍后在脚本中使用它

类似:

myvar = pwd

稍后:

cd myvar

但是多年来我的 bash 技能已经生锈了。

我将如何继续这样做?

【问题讨论】:

  • 除了您的实际问题的答案之外,您还可以使用子 shell 在不同的目录中运行命令,例如:(cd xyz ; rm temp.$$)
  • 非常酷的 NVRM。在我编写脚本并与变量分配进行斗争后,我只需尝试您的解决方案并使用 () 扭曲我的代码,它就可以工作了! (感谢我删除了 7 行)

标签: linux bash


【解决方案1】:
myvar="$PWD"
cd "$myvar"

(如果您的路径包含空格,则必须使用引号。)

【讨论】:

  • $(pwd) 可能比$PWD 更准确(但有时可能会给出与您预期不同的路径)。
  • 除非 command 中有空格,否则作业中不需要引号 - 因此,这很好用:myvar=$PWD
  • 只是为了导出相对于当前誓言的 dir 的解析路径,我发现最好的方法是:export directory=$(realpath "$PWD/../../")
【解决方案2】:

这样的事情应该可以工作:

myvar=`pwd`
# ...
cd $myvar

【讨论】:

  • 因为他明确询问 bash 我会使用替代语法:$(pwd),因为在我看来它更容易阅读。
  • $(…) 与 bash 无关;它可以并且可以说应该在所有情况下使用
  • @sgm:我不知道。事实上,似乎 POSIX 已经定义了这一点,所以使用旧反引号的理由就更少了。
【解决方案3】:

在 bash 中

$ a=$(pwd)

【讨论】:

  • 谢谢! "$pwd" 对我不起作用,但确实如此。
  • 为什么会打印目录和“没有这样的文件或目录”错误?
【解决方案4】:

除了pwd 命令和$PWD 环境变量之外,我还建议您查看pushd/popd

/$ 推送 /usr /usr/ /usr$ 推送 /var/log /var/日志 /usr/ /var/log$ popd /usr/ /usr$ popd / /$

【讨论】:

  • 另外,查看 cd - 命令(带有破折号/连字符)和 $OLDPWD 自动变量。
  • 不知道这个!谢谢
【解决方案5】:

它对我有用:

currentdir=$(cd -)
printf "Generating content at $currentdir\n"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 2018-04-13
    • 2020-04-16
    相关资源
    最近更新 更多