Perguntas sobre 'quoting'

1
resposta

Como passar vários comandos via pssh e múltiplos xterms

Estou tentando abrir vários xterms e executar um comando como um usuário do SAP via sudo usando pssh . Até agora, posso executar o PSSH em um arquivo de servidores sem verificação de chaves, abrir todos os xterm nos servidores na lista de arqu...
01.08.2014 / 21:33
3
respostas

Como passar linhas de um arquivo para um script bash, para que cada linha permaneça indivisa, mesmo que haja espaços?

Dado: $ cat lines.txt a/b 'c/d e/f' $ cat 1.sh #!/bin/sh ./2.sh 'cat lines.txt' $ cat 2.sh #!/bin/sh echo p1=$1 echo p2=$2 echo p3=$3 $ ./1.sh p1=a/b p2='c/d p3=e/f' Como faço para alterar lines.txt ou 1.sh , para que 2.sh rece...
24.08.2011 / 18:39
1
resposta

Gerando Argumentos do Comando Citados

Estou trabalhando com uma API HTTP que exige um conjunto muito particular de cabeçalhos assinados + corpo JSON. E eu realmente quero enlouquecer por depuração e sanidade em geral. Então, eu escrevi um pequeno script que, dado o nome do host,...
22.08.2018 / 15:36
7
respostas

Qual é a diferença entre $ * e $ @?

Considere o seguinte código: foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 Produz: 1 2 3 4 1 2 3 4 Estou usando o Ksh88, mas também estou interessado em outros shells comuns. Se você conhece alguma...
25.06.2012 / 11:51
1
resposta

Como garantir que a string interpolada na substituição 'sed' escape de todos os metachars

Eu tenho um script que lê um fluxo de texto e gera um arquivo de comandos sed que é executado posteriormente com sed -f . Os comandos sed gerados são como: s/cid:image002\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1922/g s/cid:ima...
12.05.2014 / 16:26
2
respostas

Misturando variáveis locais e remotas e uso e cotação adequados

O padrão recomendado para o bash, até onde eu sei, é sempre citar as variáveis do shell. Por exemplo. "$VAR" em vez de $VAR . Mas como posso alcançar a mesma segurança que as citações fornecem para variáveis que devem ser interpretadas...
20.10.2017 / 14:25
0
respostas

Como definir explicitamente o nome da tabela de um novo terminal gnome?

Eu quero explicitamente renomear uma guia no gnome-terminal na inicialização da guia. Eu não quero usar o sinalizador de gnome-terminal --title que é resetado pelo arquivo bashrc do meu sistema depois do que quer que seja executado. Eu usei e...
31.01.2017 / 21:35
5
respostas

Como posso executar 'date' dentro de uma tarefa da guia cron?

Eu quero criar um arquivo de log para um script cron que tenha a hora atual no nome do arquivo de log. Este é o comando que tentei usar: 0 * * * * echo hello >> ~/cron-logs/hourly/test'date "+%d"'.log Infelizmente, recebo esta mensa...
20.01.2012 / 18:12
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
7
respostas

Qual é a diferença entre $ * e $ @?

Considere o seguinte código: foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 Produz: 1 2 3 4 1 2 3 4 Estou usando o Ksh88, mas também estou interessado em outros shells comuns. Se você conhece alguma...
25.06.2012 / 11:51