【问题标题】:Creating variable based off counter in for loop using bash使用bash在for循环中创建基于计数器的变量
【发布时间】:2013-12-04 18:59:17
【问题描述】:

所以我试图让我的脚本询问它需要执行多少次命令,一次获取所有输入,然后运行它。所以它应该做的任务就是接受一堆文件路径。

    echo "How many SVN repositories do you need to convert and commit?"
    read repo_numb
    echo

    for ((i=1; i<=$repo_numb; i++));
    do
      echo "What is the full path to SVN repository $i?"
      read svn_repo_$i
      echo $svn_repo_$i
    done

但是 echo 只打印出 $i。如何让它创建变量 svn_repo1, svn_repo2, ... svn_repo$repo_number。

【问题讨论】:

  • 注意,当i 为5 时,你的read 确实设置了svn_repo_5 的值(参数在调用read 之前进行了参数扩展)。要访问它,您需要name="$svn_repo_$i"; echo ${!name}。不过,anubhava 建议的数组是正确的答案。

标签: bash variables for-loop counter


【解决方案1】:

您可以使用 BASH 变量间接寻址,但使用 BASH 数组会更容易。考虑这个脚本:

read -p "How many SVN repositories do you need to convert and commit?" repo_numb
echo

svn_repos=()
for ((i=1; i<=repo_numb; i++));
do
  read -p "What is the full path to SVN repository $i?" _tmp
  svn_repos+=( $_tmp )
done

echo "svn_repos=${svn_repos[@]}"

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多