Pense na primeira linha do seu script: for myvar
. Quantas vezes esse for
loop será executado se não houver argumentos?
No meu script, eu transformo os dados para um formato mais legível. Mas estou tendo um problema. Se nenhum argumento for digitado, apenas o script, eu quero que ele volte "Por favor, digite um nome de arquivo" que eu fiz. Mas, por algum motivo, não será exibido quando testado. Eu fiz isso dizendo ao sistema se o argumento é maior que 0, execute, caso contrário, ecoar a mensagem.
* Não estou procurando conselhos sobre o código de substituição. Por motivos específicos, não pode ser alterado, por isso, não dê conselhos sobre essa peça.
for myvar
do
if [ $# -gt 0 ]
then
if [ -e "$myvar" ]
then :
else
echo "$myvar cannot be found."
exit
fi
echo "This is the filname:" $myvar
cut -f1 -d, $myvar > social_security
cut -f2 -d, $myvar > last_name
cut -f3 -d, $myvar > first_name
sed 's/^ *//' last_name > last_name_draft
sed 's/^ *//' first_name > first_name_final
sed 's/-//' social_security > social_security_draft
sed 's/-//' social_security_draft > social_security_final
sed 's/$/:/' last_name_draft > last_name_final
paste -d\ first_name_final last_name_final social_security_final > final_draft
sed '1d' final_draft > final
cat final
echo -en '\n'
else
echo "Please enter a filename."
fi
done
Pense na primeira linha do seu script: for myvar
. Quantas vezes esse for
loop será executado se não houver argumentos?
Yes, you should first check if there are any arguments or not and then proceed.
if [ $# -gt 0 ]
then
for myvar
do
if ! [ -e "$myvar" ]
echo "$myvar cannot be found."
exit
fi
echo "This is the filname:" $myvar
cut -f1 -d, $myvar > social_security
cut -f2 -d, $myvar > last_name
cut -f3 -d, $myvar > first_name
sed 's/^ *//' last_name > last_name_draft
sed 's/^ *//' first_name > first_name_final
sed 's/-//' social_security > social_security_draft
sed 's/-//' social_security_draft > social_security_final
sed 's/$/:/' last_name_draft > last_name_final
paste -d\ first_name_final last_name_final social_security_final > final_draft
sed '1d' final_draft > final
cat final
echo -en '\n'
done
else
echo "Please enter a filename."
fi