Nome do arquivo de entrada do script ou entrada padrão

0
#!/bin/sh


read vstup

if [ -f "$vstup" ]
    then
    cat $vstup
else if [ $vstup = "-"]
        then
         while [ $stadvstup != "q"]
            do
            read $stadvstup >> temp.txt
            done
        cat temp.txt
        rm temp.txt
fi
fi

Eu gostaria de fazer script, que permite ao usuário inserir o nome do arquivo ou entrada padrão. Se o nome do tipo de usuário do arquivo, ele irá mostrar o conteúdo do arquivo, se o usuário digite "-", ele permitirá ao usuário fazer uma entrada e, em seguida, será emitido. Eu usei o seguinte código, por favor alguém me daria uma dica, o que está errado?

    
por Mafi 04.05.2016 / 11:35

2 respostas

1

Você teria que fazer algo assim,

#!/bin/sh

file="temp.txt"
read -r vstup

if [ -f "$vstup" ]
then
     cat "$vstup"
elif [ "$vstup" = "-" ]
then
     while read line
     do
         # break if the line is empty
         [ -z "$line" ] && break
              echo "$line" >> "$file"
     done
   cat $file
   rm $file
fi
    
por 04.05.2016 / 13:34
0
#!/bin/sh

read vstup

if [ -z "$vstup" ] ; then
    :
elif [ "$vstup" = "-" ] ; then
    vstup=''
elif [ ! -f "$vstup" ] ; then
    printf "%s is not a regular file\n" "$vstup"
    exit 1
fi

cat $vstup

cat usa como padrão copiar stdin para stdout se não tiver um nome de arquivo (ou seja, se $vstup estiver vazio). Ele continuará fazendo isso até que o usuário digite um caractere EOF ( Ctrl - D )

Inserir uma linha em branco é tratado da mesma forma que inserir - para o vstup.

    
por 05.05.2016 / 01:07

Tags