Когда я пытаюсь выполнить следующие строки кода на оболочечнойНеожиданное конкатенации переменных оболочки
#!/bin/sh
mc=XX:XX:XX:XX; dd bs=1 count=2 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"'
echo $mc
выход я получаю
:04:CCXX:XX:XX:XX
, то есть. X соединены в конце, а не в начале. Я также пробовал это (как упоминалось в ответе на SO) -
#!/bin/sh
mc=XX:XX:XX:XX
mc=$mc dd bs=1 count=2 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"'
echo $mc
Я все еще получаю тот же результат. Что мне здесь не хватает? Я новичок оболочки так, пожалуйста, простите меня за какими-либо очевидные ошибки
Почему вы ожидаете, что выход из 'echo' произойдет где-нибудь еще, чем после выхода из команд, которые предшествуют ему? Когда и как вы назначаете значение 'mc', не имеет никакого отношения, когда выполняется« echo »его значения. Скрипты оцениваются сверху донизу; 'echo' появляется после' dd | hexdump'. В любом случае, неясно, что вы пытаетесь выполнить или как вы ожидаете, что это произойдет - возможно, расширьте то, что вы хотите сделать, и как этот код должен облегчить это. – tripleee
Я пытаюсь создать случайные MAC-адреса, используя вышеуказанный код. XX: XX: XX: XX указывают фиксированную часть, которая будет исправлена для любого нового сгенерированного адреса, а оставшаяся часть адреса будет генерироваться случайным образом – Backspace