【问题标题】:use variable to set another variable [duplicate]使用变量设置另一个变量[重复]
【发布时间】:2018-09-18 14:32:25
【问题描述】:

我正在尝试做的是以下内容。 我的脚本读取当前目录中的文件夹名称:

for D in */ ; do echo $D done

结果是:

文件夹1/ 文件夹2/ 文件夹3/

在此之后,我可以将 $D 用于其他目的。 我有另一个变量:PATH 我想做的是以列表或其他形式使变量 PATH 依赖于 $D。

如果 $D 是 folder1/ 那么 PATH 是 /var/lib/idk

如果 $D 是 folder2/ 那么 PATH 是 /home/lib/user

如果 $D 是 folder3/ 那么 PATH 是完全不同的东西

然后我想像这样在 svn 结帐中使用 $PATH

svn checkout svn://svn.something.local/home/idk/$PATH

我认为数组是可能的,但是对于我这个级别的人来说,这些例子太复杂了。 谁能举个更简单的例子?

提前感谢

【问题讨论】:

  • 您正在修改$PATH?我强烈建议您使用其他名称,例如小写$path.

标签: bash shell


【解决方案1】:

使用case:

case $D in
  folder1*)
    path=/var/lib/idk
    ;;
  folder2*)
    path=/home/lib/user
    ;;
  folder3*)
    path=some other thing
    ;;
  *)
    echo "Error, Unknown variable D"
    ;;
esac

【讨论】:

    【解决方案2】:

    首先,不建议使用大写的变量名,PATH 就是一个很好的例子!

    由于您标记了 Bash,您可以使用关联数组:

    #!/bin/bash
    
    declare -A paths
    paths=( 
      [folder1/]=/var/lib/idk
      [folder2/]=/home/lib/user
      [folder3/]='something completely different' 
    )
    
    for dir in */; do
      path=${paths[$dir]}
      echo svn checkout svn://svn.something.local/home/idk/$path
    done
    

    如果您对输出感到满意,请删除 echo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      相关资源
      最近更新 更多