[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Problemas imprimindo variaveis
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Problemas imprimindo variaveis |
Date: |
Wed, 19 Apr 2006 16:00:47 -0300 |
O problema está nas aspas simples:
$ r=apuracoes_especiais_orgao
$ sed '$ s/$/:$r/' passwd
ciclano:AhdAegerhA#*(hageu:$r
$ sed "$ s/$/:$r/" passwd # entre aspas duplas
ciclano:AhdAegerhA#*(hageu:apuracoes_especiais_orgao
$ sed '$ s/$/:'$r'/' passwd # usando aspas simples, basta 'separar' a variavel
ciclano:AhdAegerhA#*(hageu:apuracoes_especiais_orgao
$ awk -v r=$r '{print $0":"r}' passwd # ou usando awk
ciclano:AhdAegerhA#*(hageu:apuracoes_especiais_orgao
On 4/19/06, Alfredo Casanova <address@hidden> wrote:
> Olá
> estou fazendo um script pra adicionar usuários em um repositório CVS...
> então, ao inves de criar usuarios no linux, eu crio via htpasswd, e dou
> permissões pra eles adicionando :nomedeusuario no final da linha, que faz
> ele herdar permissoes do linux, certo?
>
> entao, eu criei um usuário LINUX pra cada repositório, e pra cada usuário
> htpasswd que eu crio nesse repositório, eu tenho q adicionar o :talnome no
> final da linha
> exemplo
>
> tem um repositorio chamado teste
> então, criei no linux um usuario chamado teste e setei as devidas permissoes
> aí, pra adicionar um ciclano com permissao de +rw no repositorio teste, eu
> fazia:
> htpasswd ciclano
> dpois ia no arquivo, e tava assim:
>
> ciclano:AhdAegerhA#*(hageu
>
> entao, eu adicionava :teste
> ficando:
>
> ciclano:AhdAegerhA#*(hageu:teste
>
> assim ele herda as permissoes do usuario teste.
>
> entao, ocorreu que surgiu um repositorio com nome muito grande, e eu criei o
> nome de usuario menor q o nome do repositorio, o que me fez abrir um IF no
> meu script:
>
> #!/bin/bash
>
> if [ $# -eq 0 ]
> then
> echo "uso: $0 <nome.usuario>"
> exit 1
> fi
> clear
> echo Adicionando usuário ao banco CVS em `uname -n`
> echo `date`
> echo Em qual repositório quer adicionar usuário?
> ls -lah /usr/cvs | cut -c63- | sed '1,3d' | sed
> '$a\-----------------------' | sed '$i\-----------------------'
> read -p "repositorio (case sensitive): " r
> cd /usr/cvs/$r/CVSROOT
> echo Efetuando copia de seguranca do arquivo de senhas
> cp passwd passwd.old
> echo Adicionando usuario $1
> htpasswd passwd $1
> if [ $r != apuracoes_especiais_orgao ]
> then
> sed '$ s/$/:$r/' passwd >tmp
> else
> sed '$ s/$/:apuracoes/' passwd >tmp
> fi
> sort -o tmp tmp
> mv tmp passwd
> echo Usuario $1 Criado!
>
>
>
>
> então, quando ele cai no "else", ele cria corretamente, com o :apuracoes
> mas agora, quando cai no if, ao inves de interpretar o $r como o valor da
> variavel, ele interpreta o $r como texto, e faz:
> ciclano:aGUEH789AE&*9890:$r
>
> o que pode ser?
--
Tiago B Peczenyj
Linux User #405772
# cd /pub
# more beer