使用变量设置另一个变量[重复]
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
。
【讨论】:
以上是关于使用变量设置另一个变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章