Articles of bash

Bash – variables ​​variables

Eu tenho a variável $foo=”something” e gostaria de usar: bar=”foo”; echo $($bar) para obter “algo” ecoado.

Como usar o sed / grep para extrair texto entre duas palavras?

Eu estou tentando saída uma seqüência de caracteres que contém tudo entre duas palavras de uma seqüência de caracteres: input: “Here is a String” saída: “is a” Usando: sed -n ‘/Here/,/String/p’ inclui os pontos de extremidade, mas não quero incluí-los.

Transmitindo argumentos para um programa interativo não interativamente

Eu tenho um script bash que emprega o comando de leitura para ler argumentos para comandos de forma interativa, por exemplo, opções de sim / não. Existe uma maneira de chamar esse script em um script não interativo passando valores de opções padrão como argumentos? Não é apenas uma opção que tenho que passar para […]

Redirecionar toda a saída para o arquivo

Eu sei que no Linux, para redirect a saída da canvas para um arquivo, eu posso usar o > ou tee . No entanto, não sei por que parte da saída ainda é enviada para a canvas e não gravada no arquivo. Existe uma maneira de redirect toda a saída para o arquivo?

Definindo um argumento com bash

Eu frequentemente executo um comando bash simples: rpm -Uvh –define “_transaction_color 3″ myPackage.rpm que funciona corretamente. Mas agora estou tentando fazer o script em um arquivo bash e torná-lo mais flexível: #!/bin/bash INSTALL_CMD=rpm INSTALL_OPT=”-Uvh –define ‘_transaction_color 3′” ${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm No entanto, isso continua gerando o erro: error: Macro % has illegal name (%define) O […]

Como “cat << EOF” funciona no bash?

Eu precisava escrever um script para inserir input de várias linhas para um programa ( psql ). Depois de um pouco de googling, encontrei os seguintes trabalhos de syntax: cat << EOF | psql —params BEGIN; `pg_dump —-something` update table …. statement …; END; EOF Isso constrói corretamente a cadeia de várias linhas (de BEGIN; […]

Parar a expansão do caractere curinga do shell?

Existe alguma maneira de um programa de linha de comando compilado dizer ao bash ou csh que ele não deseja que nenhum caractere curinga em seus parâmetros seja expandido? Por exemplo, pode-se querer um comando shell como: foo * para simplesmente retornar o valor ASCII numérico desse caractere.

Os colchetes duplos ] são preferíveis a colchetes no Bash?

Um colega alegou recentemente em uma revisão de código que a [[ ]] construção deve ser preferida em relação a [ ] em construções como if [ “`id -nu`” = “$someuser” ] ; then echo “I love you madly, $someuser” fi Ele não podia fornecer uma justificativa. Existe um?

Como adicionar uma barra de progresso a um script de shell?

Quando o script no bash ou qualquer outro shell no * NIX, durante a execução de um comando que levará mais do que alguns segundos, é necessária uma barra de progresso. Por exemplo, copiando um arquivo grande, abrindo um arquivo tar grande. Que maneiras você recomenda para adicionar barras de progresso aos scripts de shell?

Como eu escrevo stderr para um arquivo usando o “tee” com um pipe?

Eu sei como usar tee para gravar a saída ( STDOUT ) de aaa.sh para bbb.out , enquanto ainda exibi-lo no terminal: ./aaa.sh | tee bbb.out Como eu poderia agora escrever STDERR para um arquivo chamado ccc.out , enquanto ainda está sendo exibido?