通过循环创建变量并赋值(bash)

通过循环创建变量并赋值(bash)

有没有办法创建 bash 变量并通过循环为其赋值?

大致如下:

#!/bin/bash

c=0
for file in $( ls ); do
    var"$c"="$file";
    let c=$c+1;
done

编辑:感谢@Costas 和@mdpc 指出这将是一个糟糕的列表替代方案;这个问题只是理论上的。

答案1

嗯,你绝对可以使用评估如下:

c=0
for file in $( ls ); do
    eval "var$c=$file";
    c=$((c+1));
done

此代码将创建名为 var0、var1、var2...的变量,每个变量都保存文件名。我想你有充分的理由想要通过使用数组来做到这一点......

答案2

可能你指的是数组。有一些赋值方法

第一的:

c=0
for file in $( ls ); do
    var[$c]="$file";
    c=$(($c+1));
done

第二:

c=0
for file in $( ls ); do
    var[c++]="$file";
done

第三:

for file in $( ls ); do
    var[${#var}]="$file";
done

第四:

var=( $(ls) )

第五

...

  1. 不需要使用ls,只需放置*所有文件
  2. []标志里面$可以省略

相关内容