使用变量设置另一个变量[重复]

Posted

技术标签:

【中文标题】使用变量设置另一个变量[重复]【英文标题】: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. 【参考方案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

【讨论】:

以上是关于使用变量设置另一个变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

需要在另一个页面中使用变量[重复]

如何删除或取消设置 Javascript 变量 [重复]

For循环分配溢出到另一个变量[重复]

我如何使用一个变量的内容来创建另一个变量的名称? [重复]

使用文件路径读取另一个python文件中的.py文件变量[重复]

从另一个脚本C#访问变量[重复]