使用变量来设置另一个变量

时间:2018-04-09 08:39:52

标签: bash shell

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

for D in */ ; do echo $D done

结果是:

文件夹1 / 文件夹2 / folder3 /

在此之后,我可以将$ 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

我已经知道了数组的可能性,但这些例子对于我这个级别的人来说太过于复杂。 有人可以做一个更简单的例子吗?

提前完成

2 个答案:

答案 0 :(得分:0)

首先,不建议使用大写变量名,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

答案 1 :(得分:0)

使用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