AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 519013
Accepted
SebMa
SebMa
Asked: 2019-05-15 23:06:24 +0800 CST2019-05-15 23:06:24 +0800 CST 2019-05-15 23:06:24 +0800 CST

Atribuir a mesma string a várias variáveis

  • 772

Eu quero atribuir a string contida em $valuevárias variáveis ​​BASH.

Na verdade o exemplo que dei antes ( var1=var2=...=$value) não estava refletindo exatamente o que eu queria. Até agora, encontrei isso, mas só funciona se $valuefor um número inteiro:

$ let varT=varz=var3=$value

Como eu posso fazer isso?

bash assignment
  • 5 5 respostas
  • 6527 Views

5 respostas

  • Voted
  1. Best Answer
    laenkeio
    2019-05-15T23:30:56+08:002019-05-15T23:30:56+08:00

    Na minha opinião, é melhor apenas fazer o mais legível:

    var1="$value" var2="$value" var3="$value" var4="$value" var5="$value" var6="$value" var7="$value" var8="$value" var9="$value" var10="$value"
    

    Mas se você quiser uma maneira muito curta de fazer isso, tente:

    declare var{1..10}="$value"
    

    Editado : usando expansões de chave em vez de printf e declare em vez de eval, o que pode ser perigoso dependendo do que está em $value.

    Cf. EDIT1: Você ainda pode usar expansões de chave no novo caso:

    declare var{T,z,3}="$value"
    

    É mais seguro do que a printfabordagem nos comentários porque pode manipular espaços em arquivos $value.

    • 9
  2. Kusalananda
    2019-05-15T23:50:07+08:002019-05-15T23:50:07+08:00

    letestá fazendo uma avaliação aritmética. Em bash, isso é equivalente a (( ... )). É por isso que seu código só funciona para números inteiros.

    Usando uma matriz em vez de variáveis ​​com nome especial:

    var=( "$value"  "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" )
    
    printf 'var[5]=%s\n' "${var[5]}"
    

    ou uma matriz associativa,

    declare -A var
    
    var=( ["T"]=$value ["z"]=$value [3]=$value )
    
    printf 'var[T]=%s\n' "${var["T"]}"
    

    Você também pode fazer um loop:

    for varname in var0 var1 varT varfoo; do
        declare -n var="$varname"
        var=$value
    done
    

    Este loop faz um loop sobre os nomes das variáveis. No corpo do loop, é criada uma variável de referência de nome que faz referência à variável de loop atual. Quando o valor da variável de referência de nome é definido, a variável nomeada é definida.

    • 7
  3. dedowsdi
    2019-05-15T23:39:41+08:002019-05-15T23:39:41+08:00
    value=balabala
    eval var{1..10}=\$value
    echo $var{1..10}
    
    • 3
  4. Buygrush
    2019-05-16T03:08:01+08:002019-05-16T03:08:01+08:00
    Value='-%% this is a test %%-'
    for VarName in myVar1 myVar2 myOtherVar; do printf -v "$VarName" %s "$Value"; done
    
    • 2
  5. Aybak3k
    2022-03-12T11:21:51+08:002022-03-12T11:21:51+08:00

    você poderia fazer:

    declare {varT,varz}="$value"
    
    • 0

relate perguntas

  • exportar variáveis ​​​​env programaticamente, via stdout do comando [duplicado]

  • Problema estranho ao passar variáveis ​​do arquivo de texto

  • Enquanto a linha lê mantendo os espaços de escape?

  • ordem de substituição de processos `te` e `bash`

  • Execute um script muito lento até que seja bem-sucedido

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve