Ich arbeite derzeit an der Bereinigung einiger Shell-Skripte. Während das zu tun, stieß ich auf etwas, das wie folgt aussieht:Understanding Indirection
if [ ${#VARA} -eq 0 ] || [ ${#$VARB} -eq 0 ] || [ ${$VARC} -eq 0 ]; then
...
fi
Wie Sie sehen können, gibt mit Variablen hier drei verschiedene Arten von Dingen los sind: ${#V}
, ${#$V}
und ${$V}
. Ich würde gerne eine Erklärung von jedem von diesen bitte lieben. (Plus Shellcheck is complaining über die letzte.)
Mein Bash beschwert sich schon über die zweite. Welche Schale ist es? Irgendeine Chance, dass der ursprüngliche Autor nicht wusste, was er tat und gerade alle drei versuchte. Die erste ist die String-Länge des VARAs-Wertes. – Harald
@ Harald gibt es eine sehr gute Chance dafür. Und ja, es ist Bash. Die fragliche Zeile ist in einem sehr großen Skript. Ich kann nicht versprechen, dass es überhaupt verwendet wird, aber ich fand es einfach interessant, da ich die Syntax vorher noch nie gesehen hatte. –
Kein Wunder, dass du es nicht gesehen hast, wenn es nicht funktioniert (außer dem 1.) :-) Oder vielleicht hat es in alten Versionen von bash funktioniert. – Harald