-1
votes

Qu'entend-on par `&` et `#` dans la coque de coquille / bash? Veuillez décoder la ligne du script Bash

Je suis nouveau à la programmation de bash. J'essaie de comprendre le code suivant.

Je sais seulement que $ est utilisé pour transmettre les paramètres. xxx

s'il vous plaît, pouvez-vous écrire le flux d'étapes d'exécution de la dernière ligne de code?


1 commentaires

Je vois binaire! Si c'est le cas, alors le "&" s signifie "l'opérateur Bitwise et" qui est vrai (1) si et seulement si les deux bits sont vrais (1).


4 Réponses :


1
votes

Essayez d'analyser le code étape par étape en insérant des commandes de sortie

echo $pattern
echo ${#pattern}
echo $((2*${#pattern}))
echo $tck
echo ${pins[$tck]}
# ...


0 commentaires

1
votes

Sans voir ce que vous utilisez comme entrée au script ou au total, il est assez difficile de donner une description précise.

Toutefois: P>

# This is an array and $tck is supposed to represent a "Key"
${pins[$tck]}
# You can list keys with ${pins[@]}


0 commentaires

1
votes

Collez votre code dans shellcheck.net xxx pré>

Don ' t Utilisez les deux fonction code> et () code>. Préférez le () code>. P> xxx pré>

local code> définit les variables dans la fonction comme étant scopée sur cette fonction. 1 $ code> et telles sont les valeurs des paramètres de position que la fonction reçoit. p> xxx pré>

c'est juste une simple chaîne. P>

check_data $pattern $((2*${#pattern})) ${pins[$tck]} ${pins[$tdi]} ${pins[$tdo]}


0 commentaires

1
votes

Nous verrons comment le $ , # fonctionne, puis répondez à la question.

Partie 1 < p> $ {# modèle} donnera la longueur de la chaîne que modèle est titulaire. Par conséquent, dans votre exemple ci-dessus xxx

puisque 34 est la longueur de la chaîne 0110011101001101101000010111001001

partie 2

$ {goupille [$ TCK]} est utilisé pour obtenir la valeur à index tck de tableau broches . Si la variable n'est pas définie, il sera par défaut à 0. Ici, puisque TCK n'est pas défini, $ {PINS [$ TCK]} est équivalent à $ {broches [0]} . Ainsi, la sortie sera la suivante: xxx

La sortie sera 2 car l'indexation du tableau commence à 0 en bash.

partie 3

$ () est utilisé pour la substitution de commande à bash. La commande à l'intérieur () sera exécutée et que la sortie sera substituée.

Question originale

$ ( (2 * $ {# modèle})) évalue vers $ (((2 * 34)) qui évalue à 68

depuis TCK , TDI et TDO ne sont pas définis, il sera par défaut à 0. Par conséquent,

$ {goupille [$ TCK]} évalue vers $ {broches [0]} qui évalue à 2 , le premier élément du tableau PINES .

De même, {$ {$ TDI]} et $ {$ [ TDO]} évalue les deux à 2

Par conséquent, la ligne finale de votre script est maintenant, xxx

maintenant la fonction sera appelée avec Paramètres xxx

Vous devez echo résultat de check_data fonction qui sera substitué comme

checkdatret = your_result_from_func


0 commentaires