在bash脚本中将x放在变量之间(即$ foox $ bar)

时间:2016-03-05 00:28:05

标签: bash

我无法在bash脚本中打印10x10之类的内容。我就是这样:

#!/bin/bash

i="2"
array=(1024 2048 4096 6144)

while [ $i -lt 17 ]
do
    for j in "${array[@]}"
    do
    :
    secondpart=$((j / i))
    echo "$jx$jx$j and $secondpartx$secondpart"
done
    echo "\n"
    i=$[$i*2]
done

预期输出为: 1024x1024x1024和512x512

2 个答案:

答案 0 :(得分:3)

使用${j}x;否则它会查找名为$jx

的变量

答案 1 :(得分:0)

使用join类型功能。更容易:

$ function join_array { local IFS="$1"; shift; echo "$*"; }
$ array=(1024 2048 4096 6144)
$ join_array x "${array[@]}"
1024x2048x4096x6144

然后分配给字符串:

$ s=$(join_array x "${array[@]}")
$ echo "$s"
1024x2048x4096x6144

或者,更直接地(没有该功能),你可以这样做:

$ st=$(IFS=x; echo "${array[*]}")
$ echo "$st"
1024x2048x4096x6144

如果主要用于分配字符串,请使用第二种方法。