bash que armazena o comando na variável

1

hey im novo para bater e por algum motivo eu não posso armazenar a saída em uma variável

#!/bin/bash
file="~/cs/cs3776/assignment2/passwd1.txt"
while read p; do

        echo "$p" | cut -d: -f1





done < passwd1.txt

mudando o eco para

$a=$(echo "$p" | cut -d: -f1)
echo "$a"

parece que não funciona

    
por weston 28.02.2017 / 01:24

1 resposta

1

Existem dois problemas aqui. O que você está vendo é que você está usando um sinal de dólar na variável que está atribuindo - o sinal de dólar é usado para obter o valor de uma variável, e não para defini-la. Portanto, use a=$(echo "$p" | cut -d: -f1) em vez de $a=$(echo "$p" | cut -d: -f1) .

O segundo problema está na atribuição file="~/cs/cs3776/assignment2/passwd1.txt" - o ~ precisa ser expandido para o caminho para o diretório inicial, mas essa expansão não acontece quando está entre aspas duplas. Neste caso, não há mais nada que possa ser expandido, então apenas deixar de lado as cotações ( file=~/cs/cs3776/assignment2/passwd1.txt ) funcionaria. Se aspas forem necessárias para o resto da string, é possível citar parcialmente a string ( file=~/"cs/cs3776/assignment2/passwd1.txt" ).

    
por 01.03.2017 / 04:37

Tags