将变量分解为动态变量

问题描述 投票:0回答:1

该脚本接受各种字符长度的二进制输入。

例如输入可以是00011010或001101001101101110111011(最多9组8位) 我已经成功地将它们分割为 8 位。

input_space=$(echo "$input" | sed 's/.\{8\}/& /g')

如何将每个8位组存储为单独的动态变量?

即var1=00110100 var2=11011011 var3=10111011

bash split dynamic-variables
1个回答
0
投票

您可以将 8 位集合存储在数组中,然后动态访问它们。

#!/bin/bash

input="001101001101101110111011"

# Split the input into 8-bit sets and store them in an array
input_space=($(echo "$input" | sed 's/.\{8\}/& /g'))

# Print each 8-bit set as a separate dynamic variable
for i in "${!input_space[@]}"; do
    var_name="var$(($i+1))"
    declare "$var_name=${input_space[$i]}"
    echo "$var_name=${!var_name}"
done

上面的脚本:

  1. 将输入分成 8 位组,
  2. 将它们存储在
    input_space
    数组中,然后
  3. 使用
    declare
    命令迭代数组以创建动态变量(var1、var2、var3 等)。
    ${!var_name}
    符号用于间接引用动态变量的值。 参考
© www.soinside.com 2019 - 2024. All rights reserved.