为什么我的 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

相关内容