if構造が機能しないのはなぜですか?

if構造が機能しないのはなぜですか?

.javaがまだ文字列にない場合は、文字列に追加したいと思います。構造体を使用してこれをどのように実行できますかif?私が試したことは次のとおりです。

  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

答え1

さまざまな可能性:

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

または

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

または

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

その他の質問

内容は次のようにファイルに書き込むことができます。

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

より大きなコンテンツの場合、このアプローチは簡単です。

cat <<\EOT >file
public class $naamm {
    public main...
EOT

答え2

これを使用して、grep文字列にパターンがあるかどうかをテストし、パターンを追加または渡すことができます。

#!/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

関連情報