Voici quelque chose de similaire à la réponse @GinkgoFr, mais sans les problèmes identifiés par @Tino ou @DejayClayton, et est plus robuste que le set -o posixpeu intelligent de @ DouglasLeeder :
+ function SOLUTION() { (set +o posix; set) | sed -ne '/^\w\+=/!q; p;'; }
La différence est que cette solution S'ARRÊTE après le premier rapport non variable, par exemple la première fonction rapportée par set
BTW: Le problème "Tino" est résolu. Même si POSIX est désactivé et que les fonctions sont signalées par set, la sed ...partie de la solution autorise uniquement les rapports de variables via (par exemple, des VAR=VALUElignes). En particulier, le A2ne le fait pas indûment dans la sortie.
+ function a() { echo $'\nA2=B'; }; A0=000; A9=999;
+ SOLUTION | grep '^A[0-9]='
A0=000
A9=999
ET: Le problème "DejayClayton" est résolu (les retours à la ligne intégrés dans les valeurs des variables ne perturbent pas la sortie - chacun VAR=VALUEobtient une seule ligne de sortie):
+ A1=$'111\nA2=222'; A0=000; A9=999;
+ SOLUTION | grep '^A[0-9]='
A0=000
A1=$'111\nA2=222'
A9=999
NOTE: La solution fournie par @DouglasLeeder souffre du problème "DejayClayton" (valeurs avec retours à la ligne incorporés). Ci-dessous, le A1est faux et A2ne devrait pas du tout apparaître.
$ A1=$'111\nA2=222'; A0=000; A9=999; (set -o posix; set) | grep '^A[0-9]='
A0=000
A1='111
A2=222'
A9=999
ENFIN: je ne pense pas que la version des bashchoses compte, mais ça pourrait. J'ai fait mes tests / développement sur celui-ci:
$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-msys)
POST-SCRIPT: Compte tenu de certaines des autres réponses à l'OP, je suis sûr à <100% que cela convertit set toujours les nouvelles lignes dans la valeur en \n, sur laquelle cette solution s'appuie pour éviter le problème "DejayClayton". C'est peut-être un comportement moderne? Ou une variation au moment de la compilation? Ou un paramètre set -oou une shoptoption? Si vous connaissez de telles variations, veuillez ajouter un commentaire ...
-o posixnow a diff ne contiendra que les variables.