cd参数由变量组成

时间:2018-11-06 09:15:55

标签: bash variables cd

我有一个包含路径的变量。特别是,我需要此变量从第二个文件(输入)读取路径。这就是为什么我使用awk。变量是这样的:

path_dock1=`awk 'NR==33 {print $1}' input`

除了path_dock1之外,还有其他path_dock变量以相同的方式声明。

path_dock1=`awk 'NR==33 {print $1}' input`
path_dock2=`awk 'NR==34 {print $1}' input`
path_dock3=`awk 'NR==35 {print $1}' input`
...

我希望在for循环中使用这样的变量。特别是,我想将此变量用作cd命令的参数。为此,我使用了一个从1到n的for循环变量,其中n是path_dock的总数 变量。

for t in $(seq 1 1000)
do
    cd $path_dock$t
    .... 
done

当然,这种策略只是一种尝试,它是行不通的。 您是否有建议将参数传递给以这种方式执行的cd命令?

谢谢。

2 个答案:

答案 0 :(得分:1)

使用参数扩展:

for t in $(seq 1 1000)
do
    tmp=path_dock${t}
    cd ${!tmp}
    .... 
done

答案 1 :(得分:1)

使用数组代替许多编号变量

path_dock=()
for i in {1..100} ; do
    path_dock+=($(awk 'NR=='$i' {print $1}' input))
done
...
for i in {1..100} ; do
    cd "${path_dock[i]}"
    ...
done