removido
(usa Nenhuma)
Enviado em 11/01/2015 - 00:06h
Não consegui entender muito bem o que para acontecer mas vamos tentar:
soldadolinux escreveu:
Pessoal estou querendo fazer algo tipo apt-get -d install "programa e depedências" redirecionando esse pacotes .deb para /home/programa mas travei nessa linha não consigo progredir o sed não aceita '1s/$/"$x"/' alguém pode me ajudar.
#!/bin/bash
echo 'digite o nome do programa'
read x
apt-get update ; apt-cache depends "$x" | grep "Depende" | cut -c 12- | tr '\n' ' ' | sed '1s/^/apt-get -d install /' | sed '1s/$/"$x"/'
Destrinchando a última linha de comando tempo:
apt-cache depends "$x" | # roda o apt-cache depends usando como argumento o
# conteúdo "$x" (não faço a menor ideia do que sai
# daí mas tudo bem :P)
grep "Depende" | # procura a regexp "Depende" na saída do apt-cache
cut -c 12- | # corta tudo a partir do décimo segundo caractere até o fim da
# linha
tr '\n' ' '| # translitera quebras de linha por espaços, humm ..., assumo
# que há um ou mais linhas com a regexp "Depende" e você deseja
# concatenar tudo numa linha usando caracteres de espaço ...
sed '1s/^/apt-get -d install /' | # na primeira linha, adiciona a string
# "apt-get -d install " no início; por
# conta do comando 'tr' anterior, você
# só tem uma linha aqui e sem quebra de
# linha no final, em outras palavras
# 'wc -l' seria igual a 0.
sed '1s/$/"$x"/' # na primeira linha, apensa a string '"$x"' (sem os
# apóstrofos) literalmente ao final da linha
Acho que o seu objetivo era substituir pelo conteúdo de $x, correto? Os apóstrofos são exatamente para inibir as expansões do shell, para usar a variável, você precisa deixar o shell expandir a variável:
sed 's/$/'"$x"'/'
Se tiver interesse em otimizar esse código, removendo esse absurdo de pipes, por exemplo, envie um exemplo do que sai do comando 'apt-cache depends "$x"' e um exemplo de como deve ficar no final. Do contrário, envie este último parágrafo para /dev/null :P