Como simular uma variedade de matrizes em Bash

Como simular uma variedade de matrizes em Bash
Bash é realmente uma linguagem interativa interpretada e quanto espaço para reservar com antecedência não precisa ser conhecido. Também é possível preparar uma nova matriz dinamicamente sem declará -la ou estender uma matriz definida anteriormente para incluir outras entradas. Ainda assim, as matrizes multidimensionais não são suportadas pelo Bash, e não podemos obter componentes de matriz que também são matrizes. Felizmente, matrizes multidimensionais podem ser simuladas. Este artigo fornecerá algumas ilustrações da simulação de uma matriz de matrizes em um script Bash.

Exemplo 01: Usando loops simples "para"

Temos um exemplo de simulação de uma matriz de matrizes usando o método simples. Vamos começar a demonstrar como carregar uma tabela M x N definida pelo usuário com números aleatórios (que não são aleatórios, porque cada coluna sempre terá um número semelhante em cada execução na maioria de suas linhas, mas isso não se aplica à pergunta ) e imprimi -lo. Quando trabalhamos em uma festa que você tem, Bash versão 4, o script abaixo certamente funcionaria com eficiência. Não devemos declarar solitário 0; isso é mais como uma solução perfeita para valores sendo aceitos vigorosamente. Declaramos uma matriz com a palavra-chave "-a". Se não definirmos a matriz associativa usando -a, o código pode não funcionar para nós. A palavra -chave de leitura é então usada para ler a entrada do usuário, que são linhas e colunas de uma tabela. Em seguida, usamos dois loops para a incrementação de linhas e colunas de uma tabela. Para o loop, estamos fazendo uma matriz bidimensional. No próximo para o loop, todos os valores de uma matriz foram exibidos.

Quando você executa o arquivo Bash, ele solicitará que um usuário insira linhas e colunas como "M" e "N". Depois disso, para loops, gerará uma tabela bidimensional como abaixo.

Exemplo 02: Usando hashes

Tomando a mesma instância, podemos imitar as matrizes usando hashes. No entanto, temos que ter mais cuidado com a liderança de zeros e várias outras coisas. A próxima explicação está funcionando. No entanto, a saída está muito longe de ser ideal. Temos tomado linhas e colunas manualmente. Para o loop é usado para fazer uma matriz. Então estamos usando hashes para imitar a matriz bidimensional. Por fim, a matriz será impressa como abaixo.

Executar o arquivo “Entrada.sh ”no shell da festa usando o comando bash. Você encontrará uma tabela com linhas e colunas no número mencionado.

Exemplo 03: Usando matrizes associativas

Vamos ter um exemplo de simulação com um efeito um tanto semelhante usando as matrizes associativas usadas como uma matriz como abaixo. Após a declaração da matriz associativa, definimos valores para matrizes separadamente. Depois disso, chegamos a imprimir os valores de maneira bidimensional.

Você pode ver a saída como uma matriz bidimensional enquanto executa o arquivo. Se ignorarmos a linha "declarar -a arr", a declaração de eco poderá exibir (2 3) em vez de (0 1), pois (0,0), (1,0), e outros podem ter sido usados ​​como matemática expressão e calculada para 0 (o valor no lado direito de uma vírgula).

Exemplo 04: Usando referências de nomes

Em Bash, é um problema frequente com as matrizes de referência dentro de matrizes que você terá que construir referências de nome usando declarar -n. Esse nome depois -n serve como um nome ref para o valor alocado (depois =). Atualmente, lidamos com essa variável apenas com o nome do atributo ref para estender como se fosse uma matriz e estendemos a matriz apropriadamente citada como antes. Vamos ter um exemplo de nome de referência. Declaramos com sucesso duas matrizes. Depois disso, atribuímos as duas matrizes a outra matriz como membro. Usamos o loop para fazer uma matriz bidimensional. Fizemos outra variável para adicionar os valores um a um da matriz "grupo" a ele para comparação. No fundo, ele irá para membros de matrizes internas "bar" e "foo" para pegar valores e compará -los enquanto imprimia a mensagem.

Quando executamos o arquivo “Entrada.sh ”, você verá a saída abaixo. A variável "LST" tem valores de matrizes internas dentro da matriz "grupos".

Exemplo 05: Usando a palavra -chave de corte

Só agora, eu tropecei nele. Houve uma abordagem bastante direta que funcionou para todos. Para mostrar um mapa principal para o sistema, decidi usar uma matriz contendo um nome de dispositivo e um local de tela. Temos que concatenar o título da unidade e o local correspondente de uma tela em uma única string, usando apenas um delimitador, que assumimos que não ocorrerá em nenhum dos nossos valores (no meu caso, usei .). E usei uma palavra -chave "cortada" para dividir os valores de concreto em seus componentes, se necessário. Pode haver uma abordagem mais clara e fácil de fazê -lo, e isso é apenas para ilustrar que, em certo sentido, em Bash, podemos construir uma matriz multidimensional, embora não ajude. Depois disso, você deve imprimir o nome do dispositivo e sua localização separadamente após criar a substring.

Vamos correr a festa “entrada.arquivo sh ”. Você verá o dispositivo separado e sua localização no prompt de shell, conforme a execução. A solução funciona usando o comando de corte.

Exemplo 06

Vamos dar um exemplo mais longo para emular uma matriz multidimensional. Na função load_alpha (), todos os alfabetos serão carregados na matriz. Depois disso, a função print_alpha () é declarada e usada para imprimir todos os alfabetos na ordem de linha-major como uma matriz ou formato bidimensional. Por outro lado, estamos usando a função girtate () para girar a matriz. Vamos tentar este exemplo no shell do Bash para ver os resultados.

Durante a execução, encontramos uma estrutura muito bonita de matriz multidimensional no shell da festa como abaixo

Conclusão

Tentamos com sucesso alguns exemplos para simular matrizes de matrizes em Bash. eu espero que dê certo!