Hilfe bei diesem einfachen Bash-Skript?

Ich will dass das Programm wenn ich auf "gruppen anzeigen" klicke mir alle Gruppen im System im Dialig angezeigt werden und das Programm beendet wird wenn ich auf "beenden" klicke. Aber irgendwie kommt entweder ein Fehler dass bei mir das "fi" fehlt was nicht stimmt. Oder es werden die Gruppen auch angezeigt wenn ich auf beenden klicke. Ich habe versucht die If-Anweisungen zu löschen und dann nach  wahl=$(cat $inhalt) ein echo zu machen. Und bei mir wird immer "1" ausgegeben egal auf was ich drücke. Wobei ich eig. Wenn ich auf "beenden" klicke dann sollte "Ende" rauskommen" oder ?

#!/bin/bash
#
inhalt=$(mktemp)
auswahl(){
 dialog --backtitle "Elemente anzeigen"  --title "Elemente zeigen" \
        --cancel-label "Abbruch" \
        --checklist "Bitte treffen Sie Ihre Auswahl!" 10 50 3 \
        "1." "Gruppen anzeigen im Dialig" on \
        "Ende." "Programm beenden" off \
        2>$inhalt
 fehler=$?
 clear
 if [ $fehler != 0 ] ;
  then
   echo "Da ist ein Fehler aufgetreten"
   echo "Fehler-Nr.: $fehler"
   rm $inhalt
   exit 1
 fi
 wahl=$(cat $inhalt)


 if [ "$wahl" == "1." ]; then
     dialog --backtitle "Ausgabe von Gruppen" \
            --msgbox "$(groups)" 20 60 \
 fi


 rm $inhalt
}


while :
 do
  auswahl
 done


Betriebssystem, Technik, Linux, HTML, Webseite, Java, JavaScript, VBA, Bash, Batch, cmd, Informatik, Informationstechnik, PHP, Programmiersprache, Python, Shell, Webentwicklung
FritzBox DECT-SmartHome per Bash-Script - Unerwartetes Dateiende?

Moinsen, kann mir evtl jemand sagen, warum ich den Fehler: "Unerwartetes Dateiende" bekomme, wenn ich das Script von dieser Seite ausführe?

smart_fritz_terminal.sh

Sehe da keinen Fehler. Bin aber auch kein Bash-Skript Profi.
Weiß nicht immer genau was wo zu beachten ist.
Hoffe mir kann jemand helfen den Fehler zu finden.

Falls der Link nicht geht oder sich die Datei irgendwie ändern sollte, hier nochmal zusätzlich der Quelltext direkt.

#!/bin/bash
# Die Adresse der Fritzbox
# Beispiele:
# fbox="https://192.168.178.1:444" # SSL-Verschlüsselt, Port 444
# fbox="http://192.168.178.1" # http normal, Port 80
# fbox="abcdef28kk6oabcdef.myfritz.net:444" # myfritz-Adresse, SSL, Port 444
# fbox="https://[2001:a00:12b7:c300:a00:a000:feed:921c]:444" # IPv6-Adresse, SSL, Port 444

#################
# Konfiguration #
fbox="http://192....." # Bitte Adresse eintragen
# Bei https, Ausnahme für selbst signiertes Zertifikat, sonst leer lassen
INSECURE= 
#INSECURE="--insecure" 

# Vollständige Anzeige: full, leer lassen für schnellere Ergebnisse
VIEW="full"
# das bei der Fritzbox konfigurierte Passwort
# unter System->FRITZ!Box-Benutzer->Anmeldung im Heimnetz
# Ist die Option "Anmeldung mit dem FRITZ!Box-Kennwort" aktiv
# genügt das Passwort für die Anmeldung

PASSWD="geheim"
# Der Benutzernamen für die Fritzbox
# Dieser lässt sich unter "System -> FRITZ!Box-Benutzer" erstellen.
# Dann kann man die Option
# "Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort" aktivieren

USER="MeinName" 
#################
if [ "$fbox" = "" ]; then
if [ "$fbox" = "" ]; then
echo Bitte Fritzbox Adresse im Script eintragen
exit 1
fi

RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m' 
YELLOW='\033[0;33m'
NC='\033[0m'
CURL=$(which curl) 
MD5SUM=$(which md5sum)
ICONV=$(which iconv)
AWK=$(which awk)

# Die SmartHome-Seite der Fritzbox
CURLCMD="$CURL $INSECURE -s $fbox/webservices/homeautoswitch.lua"

# Funktion zum Ermitteln der SID / Anmeldung bei der Fritzbox
get_sid() {
SID=$($CURL $INSECURE -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/')
if [ "$SID" = "0000000000000000" ]; then
challenge=$($CURL $INSECURE -s $fbox/login_sid.lua |  grep -o "<Challenge>[a-z0-9]\{8\}" | cut -d'>' -f 2)
echo challenge: $challenge
CPSTR="$challenge-$PASSWD"
hash=`echo -n $CPSTR | $ICONV -f ISO8859-1 -t UTF-16LE | $MD5SUM -b | $AWK '{print substr($0,1,32)}'`
echo MD5: $hash
RESPONSE="$challenge-$hash"
POSTDATA="?username=$USER&response=$RESPONSE"
SID=$($CURL $INSECURE --data "$POSTDATA" -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/')
fi
echo SID: $SID
}

# Funktion zum Ermitteln von Werten
get_value() {
RESULT=""
if [ "$2" = "" ]; then
RESULT=$($CURLCMD"?sid=$SID&switchcmd=$1")
else
RESULT=$($CURLCMD"?sid=$SID&ain=$2&switchcmd=$1")
fi
}

get_sid # SID holen
if [ "$SID" = "0000000000000000" ]; then
echo -e  "${RED}Anmeldung fehlgeschlagen ${NC}"
exit 1
fi
if [ "$SID" = "" ]; then
echo -e  "${RED}Anmeldung fehlgeschlagen ${NC}"
exit 1
fi

echo -e  "${GREEN}Anmeldung erfolgreich ${NC}"
echo

# Liste der Schalter ermitteln
get_value getswitchlist
COUNTER=0
IFS=', ' read -r -a array <<< "$RESULT"

# Werte der Schalter holen
for AIN in "${array[@]}"
do
let COUNTER=COUNTER+1 
echo -e  "${YELLOW}Actor #$COUNTER ${NC}"
switchpresent=0
get_value getswitchname $AIN
echo -e  "${CYAN}Name: $RESULT ${NC}"
get_value getswitchpresent $AIN
echo AIN: $AIN
echo Connected: $RESULT
if [ "$RESULT" = "1" ]; then
# bei aktiven Schaltern 
# Parameter verarbeiten, etwa: 1 on
if [ "$1" = "$COUNTER" ]; then
  if [ "$2" = "on" ]; then
    get_value setswitchon $AIN
	echo "set #$COUNTER on"
  fi	
    if [ "$2" = "off" ]; then
      get_value setswitchoff $AIN
	  echo "set #$COUNTER off"
    fi	
    if [ "$2" = "toggle" ]; then
      get_value setswitchtoggle $AIN
	  echo "set #$COUNTER toggle"
    fi	
fi
  
  # Alle Werte ermitteln/ausgeben (langsamer)
  if [ "$VIEW" = "full" ]; then
   get_value getswitchstate $AIN
   echo State: $RESULT
   get_value getswitchpower $AIN
   switchpower=`awk "BEGIN {printf \"%.2f\n\", $RESULT/1000}"`
   echo Power: $switchpower W
   get_value getswitchenergy $AIN
   echo Energy: $RESULT Wh
   get_value gettemperature $AIN
   temperature=`awk "BEGIN {printf \"%.1f\n\", $RESULT/10}"`
   echo Temperature: $temperature °C
   echo
  fi 
fi

done
exit 0
  
Bash, DECT, FRITZ!Box, lua, Script, Shell, Terminal, sh, Smart Home
Frisst KDE mehr Leistung & Arbeitsspeicher?

Wenn ich mit KDE unabhängig von der Distro programme versuche rumzu „snappen“ also sozusagen chrome von halber grösse an die obere wand drücke um es auf volle grösse zu machen es (auf meinem zweiten bildschirm besonders) rumlaggt und nicht clean aussieht.
habe ohne geöffnete programme 1488 mb verbraucht, bei cinnamon 1470mb ca und xfe 950 mb ca von eigentlich 12gb(3x ddr4 4gb) / bzw 10,5 sind verfügbar davon.

windows hingehen läuft viel performanter wie geleckt, ubuntu gnome lief auch immer wie geleckt beim snappen, cinnamon xfce wahrscheinlich auch.
woran könnte es liegen? Ich mag auch. Nicht besonders das snap verhalten in der innenseite der 2 monitore man muss länger halten damit es funktioniert und es gibt keine art widerstand.
Hier ein paar specs, mein gaming pc ist in die jahre gekommen das ist mir bewusst aber irgendwie ist das seltsam denn es funktioniert sonst alles einwandfrei flüssig innerhalb der programme bis auf das hin und her schieben von programmen. was müsste ich im zweifel austauschen ? Die cpu denke ich, könnte es auch auf einem anderen laptop mal testen ob es daran liegt

Auch in Kubuntu, Debian, Fedora war dieses verhalten zu spüren.


    ~  neofetch                                                                                       ✔ 
██████████████████  ████████   X@x 
██████████████████  ████████   -------------------- 
██████████████████  ████████   OS: Manjaro Linux x86_64 
██████████████████  ████████   Host: x-x
████████            ████████   Kernel: 6.5.5-1-MANJARO 
████████  ████████  ████████   Uptime: 7 mins 
████████  ████████  ████████   Packages: 1151 (pacman) 
████████  ████████  ████████   Shell: bash 5.1.16 
████████  ████████  ████████   Resolution: 3840x1080 
████████  ████████  ████████   DE: Plasma 5.27.8 
████████  ████████  ████████   WM: KWin 
^[[A████  ████████  ████████       Theme: [Plasma], Breeze [GTK2/3] 
████████  ████████  ████████   Icons: [Plasma], breeze [GTK2/3] 
████████  ████████  ████████   Terminal: konsole 
                               CPU: AMD Ryzen 3 2200G (4) @ 3.500GHz 
                               GPU: NVIDIA GeForce GTX 1050 Ti 
                               GPU: AMD ATI Radeon Vega Series / Radeon Vega Mobile Series 
                               Memory: 2412MiB / 10901MiB 

Primär Bildschirm 1: aoc 24zoll 75hz

zweitbildschirm : irgendein samsung curved 27 zoll 60 hz

Server, Computer, Software, Windows, Microsoft, Betriebssystem, Linux, CPU, Hardware, Ubuntu, RAM, Anwendungsentwicklung, Bash, Gaming PC, Gnome, Informatik, KDE, Linux Mint, macOS, Open Source, Programmiersprache, Softwareentwicklung, Arch Linux, Bootloader, grub, Debian, github, CINNAMON, Manjaro
Ubuntu /etc/bin/bluetooth/main.conf Standard inhalt zurück bekommen?

Hab bisschen mist gebaut denke ich und bräuchte die Standart werte von Ubuntu 23.04 von einer Guten Quelle oder direkt von dem Source Code, leider nicht auf Github gefunden.

Wollte eigentlich nur meine Air Pods Pro 2 Fixen da immer nur einer gleichzeitig Musik abspielen konnte.
Der andere war wahrscheinlich als ein Mikrofon eingestellt da auch unter Klang und Eingang Air Pods eingestellt war uwas ich nicht will das das System überhaupt ein Mikro benutzt. Aber man muss eins wählen in diesem Options ding.

Und ja hab schon versucht von ControllerMode = bredr auf dual zu wechseln, deswegen geht es überhaupt erst auf einem ohr aber nicht auf beiden.
Ich muss auch bei jedem neustart des Pcs oder nach einer weile die Air Pods wieder erneut trennen und verbinden über bluetooth.
Das läuft dann jeden tag so ab : komplett entfernen, Case öffnen mit beiden air pods drinne.
taste auf der rückseite gedrückt halten bis es einen sound macht und weiss leuchtet.
auf verbinden klicken sobald es ubuntu erkennt und warten.
dann nehme ich erstmal einen kopfhörer raus und gucke ob sound kommt, es kommt keiner dann nehme ich den zweiten aus der case raus und da spielt sich dann musik ab.

das ist alles unmöglich zu benutzen und andere Kopfhörer hab ich leider zurzeit nicht. Meine overear mit aux sind kaputt gegangen und ich will auch keine Overear mehr weil ich dadurch haarausfall erleide, mit in ears hab ich keine Probleme.

PC, Server, Apple, Computer, Windows, Betriebssystem, Technik, Bluetooth, Linux, IT, Programmierer, Ubuntu, Bash, developer, Fachinformatiker, Informatik, Informatiker, IT-Sicherheit, Linux Mint, macOS, netzwerkadministrator, Netzwerktechnik, Open Source, openSUSE, OS, Programmiersprache, Script, Shell, Treiber, Unix, Arch Linux, Konfiguration, Systemwiederherstellung, Texteditor, Bluetooth-Kopfhörer, Dateisystem, Debian, PowerShell, Windows 10, github, Manjaro, Windows 11, AirPods, Air Pods Pro
Gibt es in der Shell eine Kontrollstruktur analog case für Mehrfachauswahl?

Bekanntlich handelt es sich bei »case« um einen Schalter, mit dem man einen einfachen Wert abfragen kann, ohne jeweils die etwas unübersichtlichere »if ... elif ... else«-Sequenz verwenden zu müssen. Aber gibt es solch eine Möglichkeit auch für Mehrfachauswahl, und ich habe sie bisher nur noch nicht entdeckt?

Um das ein wenig zu veranschaulichen, habe ich ein Beispielskript geschrieben: in den Kommentaren ist enthalten, wie ich mir die Struktur in etwa vorstelle, die if-Abfrage würde dann entsprechend entfallen:

#!/bin/bash
wahl=$1
# multi-case $wahl in
#    a)
      if fgrep -q 'a' <<< $wahl; then
        echo 'Die erste Befehls-Sequenz wird ausgeführt.'
      fi
#    b)
      if fgrep -q 'b' <<< $wahl; then
        echo 'Die zweite Befehls-Sequenz wird ausgeführt.'
      fi
#    c)
      if fgrep -q 'c' <<< $wahl; then
        echo 'Die dritte Befehls-Sequenz wird ausgeführt.'
      fi
#    d)
      if fgrep -q 'd' <<< $wahl; then
        echo 'Die vierte Befehls-Sequenz wird ausgeführt.'
      fi
#    e)
      if fgrep -q 'e' <<< $wahl; then
        echo 'Die fünfte Befehls-Sequenz wird ausgeführt.'
      fi
# esac-itlum

In der Ausführung:

x@yz:~$ ./mehrfachauswahl.sh bd
Die zweite Befehls-Sequenz wird ausgeführt.
Die vierte Befehls-Sequenz wird ausgeführt.
x@yz:~$
Linux, Bash
./startserver.sh: line 58: unexpected EOF while looking for matching ./startserver.sh: line 61: syntax error: unexpected end of file?

Ich habe das Problem ich finde nicht den Fehler könnte mir jemand helfen bin erst anfänger.

Will einen Minecraft Serverstarter machen.

#!/bin/bash


    if [ -f craftbukkit-1.16.5.jar ]; then
            echo "Skipping download. Using existing craftbukkit-1.16.5.jar"
            java -Xmx5G -Xms5G -jar craftbukkit-1.16.5.jar
               if [[ $DO_RAMDISK -eq 1 ]]; then
               sudo umount $SAVE_DIR
               rm -rf $SAVE_DIR
               mv "${SAVE_DIR}_backup" $SAVE_DIR
               fi
    else
            export URL="https://cdn.getbukkit.org/craftbukkit/craftbukkit-1.16.5.jar"
    fi
        echo $URL
        which wget >> /dev/null
    if [ $? -eq 0 ]; then
        echo "DEBUG: (wget) Downloading ${URL}"
        wget -O craftbukkit-1.16.5.jar "${URL}"
   else
        which curl >> /dev/null 
        if [ $? -eq 0 ]; then
        echo "DEBUG: (curl) Downloading ${URL}"
        curl -o craftbukkit-1.16.5.jar "${URL}"
        else
        echo "Neither wget or curl were found on your system. Please install one and try again"
        fi
    fi
    
    if egrep -q eula=true eula.txt; then
            echo Starting ...
            java -Xmx5G -Xms5G -jar craftbukkit-1.16.5.jar nogui
            exit
    else
        Height=15
        WIDTH=40
        CHOICE_HEIGHT=4
        BACKTITLE="Bukkit"
        TITLE="Choice"
        MENU="Do you accet the eula at (https://account.mojang.com/documents/minecraft_eula) ? "
        OPTIONS=(1 "Yes
                 2 "No")


        CHOICE=$(dialog --clear \
                        --backtitle "$BACKTITLE" \
                        --title "$TITLE" \                              --menu "$MENU" \
                        $HEIGHT $WIDTH $CHOICE_HEIGHT \
                        "${OPTIONS[@]}" \
                        2>&1 >/dev/tty)


            clear
            case $CHOICE in
                    1)
                        echo "You accepted the eula..."
                        sed s/false/true/g eula.txt
                        java -Xmx5G -Xms5G -jar craftbukkit-1.16.5.jar nogui
                        ;;
                    2)
                        echo "You not Accepted the eula"
                        ;;
    fi
programmieren, Ubuntu, Minecraft, Bash, Minecraft Server
apt-get update Fehler?

Hallo!

Wenn ich den Befehl "sudo apt-get install update" in der bash auf Ubuntu ausführe, bekomme ich am Ende folgende Fehlermeldung:

E: Das Depot »http://ppa.launchpad.net/george-edison55/cmake-3.x/ubuntu disco Release« enthält keine Release-Datei.
N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.
N: Weitere Details zur Erzeugung von Paketdepots sowie zu deren Benutzerkonfiguration finden Sie in der Handbuchseite apt-secure(8).
E: Das Depot »http://ppa.launchpad.net/hsoft/ppa/ubuntu disco Release« enthält keine Release-Datei.
N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.
N: Weitere Details zur Erzeugung von Paketdepots sowie zu deren Benutzerkonfiguration finden Sie in der Handbuchseite apt-secure(8).
N: Das Laden der konfigurierten Datei »main/binary-i386/Packages« wird übersprungen, da das Depot »http://dl.google.com/linux/earth/deb stable InRelease« die Architektur »i386« nicht unterstützt.
Error executing command, exiting

Das tritt auch bei folgendem Befehl auf, mit dem ich eine nodejs Paketquelle hinzufügen möchte:

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Ich vermute, dass durch diesen Fehler die Quelle nicht hinzugefügt wird, denn wenn ich "sudo apt-get install nodejs" eintippe, ich immer noch nur eine 10.x... Version bekomme.

Was kann ich dagegen tun?

Computer, Technik, Linux, programmieren, Ubuntu, Bash, Shell, Technologie, apt-get, node.js, Spiele und Gaming

Meistgelesene Fragen zum Thema Bash