por que a minha estrutura if não funciona?

1

Eu quero adicionar .java à minha string, se ela ainda não tiver. Como posso fazer isso funcionar com uma estrutura if ? Isso é o que eu tentei:

  6 echo geef eens je naam van je java programma?
  7 
  8 read naam
  9 firstletter=${naam:0:1}
 10 
 11 naamm="${naam^}"
 12 echo $naamm
 13 
 14 add=".java"
 15 
 16 if [ ${naamm:(-5)} != ".java" ]
 17 then
 18         naamm=$naamm$add
 19         echo $naamm
 20 else
 21         #nothing
 22 fi
    
por florian de wulf 23.12.2017 / 11:31

2 respostas

3

Várias possibilidades:

if ! [[ $naamm =~ \.java$ ]]

ou

name="${name%.java}.java"

ou

if [ "${name: -5}" = '.java' ]

pergunta adicional

O conteúdo pode ser gravado em um arquivo como este:

echo "public class $naamm {
public main..." >file

Para conteúdos maiores, essa abordagem é mais fácil:

cat <<\EOT >file
public class $naamm {
    public main...
EOT
    
por 23.12.2017 / 12:38
1

Você pode usar grep para testar se a sequência tem padrão e, em seguida, anexá-la ou passar.

#!/bin/bash
vars=(String.obj String.java)

for v in "${vars[@]}"; do
    if ! echo "${v}" | grep -q "\.java$"; then
        appended="${v}.java"
        echo "${appended}"
    fi
done
    
por 23.12.2017 / 12:11