Ajuda na criação de um shell script

1. Ajuda na criação de um shell script

Alberto Lira
aslira

(usa CentOS)

Enviado em 06/11/2019 - 19:47h

Preciso construir um shell script que receba em seu primeiro parâmetro o caminho de um arquivo e imprima “dir” caso seja um diretório “file” caso seja um arquivo e “error” caso o arquivo não exista, alguém pode me ajudar por favor?

Pensei em algo assim mas ainda nao consegui como faço para identificar se for "dir"

#!/bin/bash
DIR=/home/guest/
FILE=entrevista.txt

if [ -e "$DIR$FILE" ] ; then
echo "file"
else
echo "error"
fi



  


2. Re: Ajuda na criação de um shell script

aguamole
aguamole

(usa KUbuntu)

Enviado em 06/11/2019 - 21:12h

Se eu entende o que você quer o script fica assim.
#!/usr/bin/env bash
DIR=/home/guest/
FILE=entrevista.txt

if [ -d $DIR ]; then
echo "dir"
else
echo -e "\033[31merror\033[m"
fi

if [ -f $FILE ]; then
echo "file"
else
echo -e "\033[31merror\033[m"
fi

Como você não coloco o caminho do arquivo ele vai verificar a existência dele no diretório atual.

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


3. Re: Ajuda na criação de um shell script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/11/2019 - 22:33h

aslira escreveu:

Preciso construir um shell script que receba em seu primeiro parâmetro o caminho de um arquivo e imprima
“dir” caso seja um diretório
“file” caso seja um arquivo e
“error” caso o arquivo não exista.
Alguém pode me ajudar por favor?

Pensei em algo assim mas ainda nao consegui como faço para identificar se for "dir"

#!/bin/bash
DIR=/home/guest/
FILE=entrevista.txt

if [ -e "$DIR$FILE" ] ; then
echo "file"
else
echo "error"
fi

Boa noite Aslira, com o comando ls -l arquivo, é possível obter o desejado,
Veja:
drwxr-xr-x 2 user user 40 nov 6 15:53 Documentos
-rw-r--r-- 1 user user 1958 nov 6 17:48 password.txt
O primeiro caractere identifica o arquivo:
"d"=diretório
"-"=Arquivo comum
Completo em:
https://aurelio.net/shell/canivete/#ls 

Optei pelo comando "stat"
segue:
_________________________________________________
#!/bin/bash
[ -z "$1" ] && { echo -e "Informe o Parâmetro\nSaindo\n";exit;}
stt=$(stat -c %F "$1" 2>/dev/null);
[ "$stt" ] && echo "$1 é um: $stt" || echo "Erro"

_________________________________________________

Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


4. Re: Ajuda na criação de um shell script

Adriano Siqueira
adrisiq

(usa KDE Neon)

Enviado em 06/01/2020 - 20:42h

Poderia ser feito assim:
#!/bin/bash

ARGUMENTO="$1"

if [[ "$ARGUMENTO" == "" ]]; then
echo "[ E ]: Argumento não informado."
elif [[ ! -e "$ARGUMENTO" ]]; then
echo "[ E ]: Arquivo não existe."
elif [[ -h "$ARGUMENTO" ]]; then
echo "[ I ]: Argumento corresponde a um link."
elif [[ -d "$ARGUMENTO" ]]; then
echo "[ I ]: Argumento corresponde a um diretório."
elif [[ -f "$ARGUMENTO" ]]; then
echo "[ I ]: Argumento corresponde a um arquivo."
else
echo "[ E ]: Argumento não corresponde a nada."
fi







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts