• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

In POSIX sh, array references are undefined.

foxit

Moderator
Mitarbeiter
Themenstarter #1
Hallo zusammen

In einem Skript verwende ich folgendes:
Code:
#!/usr/bin/env sh
...
...

_SN="(node1 node2 node3)"

...
...

if [ "$#" = "0" ]; then
  f_help
  exit 1
else
  case "$1" in

...
...

    show)
      echo "${_SN[@]}"
    ;;

...
...
Der Code funktioniert und ich wollte zum Abschluss man noch einen Test mit "shellcheck" [1] machen. Dieses Tool wirft mir aber folgende Meldung:
Code:
In node_backup.sh line 68:
  echo "${_SN[@]}"
  ^-- SC2039: In POSIX sh, array references are undefined.
Leider verstehe ich auch nach dem Xten mal lesen diese Meldung nicht. Was genau ist hier das Problem?

Danke

[1] https://github.com/koalaman/shellcheck
 

TCM

Well-Known Member
#6
#!/usr/bin/env sh ? Also bitte... Wenn schon POSIX, dann hat auch /bin/sh zu existieren. Oder warum bist du dir sicher, dass /usr/bin/env immer existiert?
 
Zuletzt bearbeitet:

lme

FreeBSD Committer
#7
#!/usr/bin/env sh ? Also bitte... Wenn schon POSIX, dann hat auch /bin/sh zu existieren. Oder warum bist du dir sicher, dass /usr/bin/env immer existiert?
Das kann aber durchaus sinnvoll sein. Unter Solaris ist /bin/sh eine total grützige Mistshell, die POSIX nicht mal buchstabieren kann.
Wenn man dann /usr/xpg4/bin vor /bin in den Pfad nimmt, wird eine POSIX-konforme sh benutzt.