Como obtenho um script bash para fazer um eco em um novo arquivo? [fechadas]

-1

Eu tenho um script bash. Eu quero que este script se recriar em / usr / local / bin sem precisar de um arquivo adicional para fazer isso.

bash_a.sh:

ssh -t -t server-a.com "
cd /var/
irb
..etc
"

Eu estava pensando em algo ao longo das linhas:

echo "
ssh -t -t server-a.com "
cd /var/
irb
..etc
"
" > /usr/local/bin/bash_a.sh

Ou isto:

cp bash_a.sh /usr/local/bin/bash_a.sh
ssh -t -t server-a.com "
cd /var/
irb
..etc
"
    
por Bruno 17.07.2015 / 20:43

2 respostas

2

Experimente o truque de aspas simples e aspas duplas para sua sugestão:

echo '#!/bin/bash
ssh -t -t server-a.com "
cd /var/
irb
..etc
"
' > /usr/local/bin/bash_a.sh
chmod a+rx /usr/local/bin/bash_a.sh

Dentro de aspas simples, o shell manipula os dados inalterados. Dentro de aspas duplas, o shell expande $ variáveis, barras invertidas, backticks e todos tipos de coisas. Então, geralmente, use aspas simples sempre que possível.

No entanto, dentro de aspas simples você não pode usar aspas simples facilmente, enquanto as aspas duplas entre aspas simples são fáceis.

Dentro de aspas duplas você pode usar aspas duplas, mas você deve escapar delas com barra invertida. Então, echo "abc\"def\"" imprime abc"def" .

Dentro de aspas duplas, você também pode usar aspas simples, mas elas não param toda a expansão. Então, echo "abc'def'" imprime abc'def' .

Você pode usar aspas simples entre aspas simples, mas precisa digitar: echo 'abc'\''def'\''hij' que imprime abc'def'hij .

    
por 17.07.2015 / 21:07
1

Usando a resposta em Um script de bash pode ser informado em qual diretório ele está armazenado? :

#!/bin/bash
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
BINDIR=/usr/local/bin
if [[ $DIR != $BINDIR && -w $BINDIR ]]
then
    cp "${BASH_SOURCE[0]}" $BINDIR
fi
... rest of script

O if impede que o script tente copiar a si mesmo, ele está sendo executado em / usr / local / bin ou se estiver sendo executado por um usuário que não tem permissão para copiar lá.

    
por 17.07.2015 / 20:56

Tags