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 / ubuntu / Perguntas / 1523674
Accepted
udippel
udippel
Asked: 2024-08-18 03:26:07 +0800 CST2024-08-18 03:26:07 +0800 CST 2024-08-18 03:26:07 +0800 CST

Como posso modificar uma variável/argumento passado para um script online/inline

  • 772

Estou procurando passar uma variável para o script (sei como fazer isso), que será repetida pelo script para modificar um pouco essa variável.

$ [scriptname] foo bar 

onde [scriptname] é o nome do programa e fooos bardois argumentos passados. [Editado para esclarecimento, após comentário:] O arquivo resultante deve ser nomeado foo_bar1, mas com a opção de o usuário fazer pequenas modificações no nome do arquivo que não pode ser conhecido de antemão. Portanto, poderia parecer

$ [scriptname] foo bar
The output file name will be foo_bar1

E aqui eu gostaria de poder usar interativamente, como barra invertida, remover 1e substituí-lo por sublinhado ( _) e 2: O nome do arquivo de saída será, portanto, foo_bar_2 E esta seria posteriormente uma variável conhecida ou nova no script, para que os resultados deste script pode ser gravado em um arquivo de saída chamado foo_bar_2.
O motivo da minha pergunta é que os nomes dos arquivos não têm apenas 3 caracteres, mas são bastante longos e contêm dados específicos. Portanto, o usuário não deve (tentar) redigitar dezenas de caracteres; muitas vezes o nome do arquivo de saída será o proposto. O usuário verá, na maioria das vezes apenas 'Enter'. Embora também tenha a chance de adicionar pequenas modificações próprias. [Espero que isso explique um pouco melhor o que eu preciso.?]

Isso é possível? Se sim, eu ficaria feliz em aprender como fazer isso. E não é necessariamente apenas o último número (eu saberia como removê-lo/isolá-lo). Mas, às vezes, eu também deveria poder chamar o output foofoo_bar_2.

scripts
  • 1 1 respostas
  • 56 Views

1 respostas

  • Voted
  1. Best Answer
    user68186
    2024-08-18T07:12:16+08:002024-08-18T07:12:16+08:00

    Com base no meu entendimento do que você está tentando fazer, escrevi um script bash. São necessários dois argumentos. O script será encerrado se exatamente dois argumentos não forem fornecidos. Se o script encontrar dois argumentos, ele os combinará com um _intermediário e um 1como sufixo para formar um "nome de arquivo". Em seguida, o script apresentará esse "nome de arquivo" ao usuário e o usuário terá a oportunidade de editá-lo como desejar.

    O roteiro:

    Crie um arquivo chamado altnamecom o seguinte conteúdo:

    #!/bin/bash
    # Purpose: This script takes two arguments and creates a filename with it.
    #      Then it presents the user with the filename and an oppotunity to alter it.
    
    # Check for two arguments
    if [ $# -ne 2 ]; then
      echo 1>&2 "Usage: $0 arg1 arg2"
      exit 3
    fi
    
    # Create the proposed filename by adding "_" and "1"
    filename="$1"_"$2"1
    
    # Ask the user for approval or change
    echo "This is the proposed filename."
    read -e -i "$filename" -p "Hit Enter to accept or change:" filename
    echo "the final filename is: $filename"  
    

    Salve o arquivo. Abra um terminal e execute o script com o comando:

    ./altname foo bar
    
    This is the proposed filename.
    Hit Enter to accept or change:foo_bar1
    

    Você deverá ver um prompt como o acima. Use as teclas de seta, delete, backspace, etc. para alterar o nome e pressione Enter. O script exibirá o nome do arquivo final.

    Espero que isso ajude

    • 3

relate perguntas

Sidebar

Stats

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

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

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