Perguntas sobre 'quoting'

7
respostas

Não pode usar o ponto de exclamação (!) no bash?

Estou tentando usar o comando curl para acessar um URL http com um ponto de exclamação ( ! ) em seu caminho. por exemplo: curl -v "http://example.org/!287s87asdjh2/somepath/someresource" o console responde com bash: ... event not found...
03.03.2012 / 19:36
4
respostas

Como posso ecoar cifrões?

Por exemplo, $PATH e $HOME Quando digito echo $PATH , ele retorna meu $PATH , mas quero fazer eco da palavra $PATH e não da variável real, echo "$PATH" também não funciona.     
16.10.2014 / 13:26
4
respostas

Como posso usar a coluna para delimitar nas guias e não nos espaços?

Gostaria de usar o comando Unix column para formatar algum texto. Eu tenho campos delimitados por guias, mas dentro de cada campo também há espaços. column delimita no espaço em branco (tabulações e espaços). Como posso fazer a coluna usa...
30.11.2012 / 10:36
5
respostas

Passa a variável do shell como / pattern / to awk

Tendo o seguinte em uma das minhas funções do shell: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } , quando chamado como _process $arg , $arg é passado c...
21.03.2014 / 16:03
5
respostas

Como escapar aspas no shell?

Estou com problemas para escapar de personagens no bash. Gostaria de escapar de aspas simples e duplas ao executar um comando sob um usuário diferente. Para os propósitos desta pergunta, digamos que eu queira repetir o seguinte na tela: 'sing...
05.02.2012 / 05:48
3
respostas

Por que não consigo escapar de espaços em um script bash? [duplicado]

Estou tentando escapar do caractere de espaço para um caminho no Bash, mas não usando uma barra invertida ou citações funciona. Script .sh: ROOT="/home/hogar/Documents/files/" FILE=${ROOT}"bdd.encrypted" DESTINATION="/home/hogar/Ubun...
10.01.2014 / 01:40
6
respostas

Parêntese na expr aritmética: 3 * (2 + 1) ______ qstntxt ___

%code% parece não gostar de parênteses (usado em matemática para especificar a prioridade do operador):

%pre%

Como expressar a prioridade do operador no bash?

    
______ azszpr149832 ___

Outra maneira de usar %code% bash builtin:

%pre%

Nota

Como @ Stéphane Chazelas apontou , em %code% você deve usar %code% para fazer aritmética %code% ou %code% para legibilidade.

Para portabilidade, use %code% como @Bernhard answer .

    
______ azszpr149830 ___

Você pode usar a expansão aritmética.

%pre%

Na minha opinião pessoal, isso parece um pouco melhor do que usar %code% .

De %code%

%bl0ck_qu0te%     
______ azszpr149916 ___

Não há razão para usar %code% para aritmética em shells modernos.

POSIX define o operador de expansão %code% . Então você pode usar isso em todos os shells compatíveis com POSIX (o %code% de todos os Unix-gostos modernos, traço, bash, yash, mksh, zsh, fino, ksh ...).

%pre%

%code% também introduziu um %code% builtin que é transmitido com o mesmo tipo de expressão aritmética, não expande para algo, mas retorna um status de saída com base em se a expressão é resolvida como 0 ou não, como em %code% :

%pre%

No entanto, como a cotação a torna inábil e não muito legível (não na mesma proporção que %code% , é claro), %code% também introduziu uma forma alternativa %code% :

%pre%

, que é muito mais legível e deve ser usado em seu lugar.

%code% e %code% só estão disponíveis em %code% , %code% e %code% . A sintaxe %code% deve ser preferida se a portabilidade para outros shells for necessária, %code% é necessário apenas para shells pré-POSIX semelhantes a Bourne (normalmente o shell Bourne ou versões antigas do shell Almquist).

Na frente não-Bourne, existem alguns shells com operador aritmético integrado:

  • %code% / %code% (na verdade, o primeiro shell Unix com avaliação aritmética incorporada):

    %pre%
  • %code% (com base em %code% )

    %pre%
  • como uma nota de história, a versão original do shell Almquist, como publicado no usenet em 1989, tinha um %code% construído (na verdade, mesclado com %code% ), mas foi removido posteriormente.

______ azszpr149991 ___

%code% é um comando externo, não é uma sintaxe especial do shell. Portanto, se você quiser que %code% veja os caracteres especiais do shell, será necessário protegê-los da análise do shell, citando-os. Além disso, %code% precisa que cada número e operador sejam passados como um parâmetro separado. Assim:

%pre%

A menos que você esteja trabalhando em um antigo sistema unix dos anos 1970 ou 1980, há muito poucas razões para usar %code% . Antigamente, os shells não tinham uma maneira interna de realizar aritmética, e você precisava chamar o utilitário %code% . Todos os shells POSIX possuem aritmética interna por meio da sintaxe expansão aritmética .

%pre%

A construção %code% se expande para o resultado da expressão aritmética (escrita em decimal). Bash, como a maioria das shells, suporta apenas módulos aritméticos inteiros 2 64 (ou módulo 2 32 para versões mais antigas do bash e algumas outras shells em máquinas de 32 bits). p>

O Bash oferece uma sintaxe de conveniência adicional quando você deseja realizar atribuições ou para testar se uma expressão é 0, mas não se importa com o resultado. Esta construção também existe em ksh e zsh, mas não em sh simples.

%pre%

Além da aritmética inteira, %code% oferece algumas funções de manipulação de string. Eles também são incluídos pelos recursos de shells POSIX, exceto por um: %code% testa se a string corresponde ao regexp especificado. Um shell POSIX não pode fazer isso sem ferramentas externas, mas o bash pode com %code% (com um sintaxe diferente de regexp - %code% é uma ferramenta clássica e usa BRE, bash usa ERE).

A menos que você esteja mantendo scripts executados em sistemas de 20 anos, não é necessário saber que %code% já existiu. Use aritmética de shell.

    
______ azszpr149824 ___

Use parênteses com aspas:

%pre%

As citações evitam que o bash interprete os parênteses como a sintaxe bash.

    
______ azszpr349827 ___

Se você tiver bc ...

%pre%     
___

expr parece não gostar de parênteses (usado em matemática para especificar a prioridade do operador): expr 3 * (2 + 1) bash: syntax error near unexpected token '(' Como expressar a prioridade do operador no bash?     
12.08.2014 / 08:09
5
respostas

Como executar um comando que envolve redirecionar ou canalizar com o sudo?

Estou tentando seguir o que suponho serem as melhores práticas de usar o sudo em vez da conta root. Estou executando uma operação de arquivo de concat simples, como: sudo echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock Isso fal...
26.12.2013 / 13:41
8
respostas

Como adicionar novas linhas em variáveis no script bash

Quando faço str="Hello World\n===========\n" Também recebo o \n impresso. Como posso ter novas linhas então?     
03.09.2011 / 09:07
7
respostas

Usando sed para localizar e substituir uma string complexa (preferencialmente com regex)

Eu tenho um arquivo com o seguinte conteúdo: <username><![CDATA[name]]></username> <password><![CDATA[password]]></password> <dbname><![CDATA[name]]></dbname> e eu preciso fazer um scr...
07.06.2013 / 23:33