【问题标题】:change directory from string从字符串更改目录
【发布时间】:2014-10-03 08:19:27
【问题描述】:

这就是问题所在。我有一个 bash 脚本,它从 php 脚本中获取路径。但它不能将目录更改为返回路径;

function go_to_path
{
  path=$(php myscript)
  echo $path; # is totally okay, printing expected value 
  cd $path; # err -> no such file or directory. Directory is obviously exists
}

那东西也不好用

eval cd $path
echo $(cd $path)
cd "$path"

我在 windows 上通过 cygwin 运行 bash

【问题讨论】:

  • 删除=前后的空白。
  • 在引号中设置变量:"$path"
  • 它在“不起作用”列表中
  • 将该函数放入一个shell脚本并在其上运行bash -x并发布输出。也可能有助于获得准确的输出,而不是查看您的 cmets。
  • 如果你从脚本中得到的路径是windows路径当然不行。

标签: bash path cygwin cd


【解决方案1】:

这对我来说很好用:

function go_to_path
{
    path="/home/arnon/scripts"
    echo $path
    cd $path
}
ls
go_to_path
ls

如果 'path' 包含 '~'(例如在此示例中:path="~/scripts"),它将不起作用,因为这是一个 shell 解释字符,而不是目录名称的一部分。

如果 'path' 相对于一个不是您运行此脚本的目录的目录,它也将不起作用。 (换句话说,如果 'php myscript' 返回一个相对路径,请确保相对性适用于运行 bash 脚本的位置)。

【讨论】:

  • php 脚本返回绝对目录
  • 如果路径包含空格、其他空格或通配符,这也不起作用。当用作命令的参数时,应将变量双引号括起来,例如 echo "$path"cd "$path"
  • 如果我只是从脚本更改目录复制粘贴返回值按预期工作。路径值完全合法
  • 在脚本中手动编写合法路径是否有效?
【解决方案2】:

哦,天哪。所以我想我没有正确地撰写我的问题。路径值取自动态算法。这只是回显返回值。解决方案很简单,而不是回显值,我应该退出它。我的意思是退出带有路径值的脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2023-03-19
    • 2020-10-02
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多