Основываясь на идее @frams, мы можем сделать ответ короче:
sign=${1//[[:digit:]]}
value=${1//[^[:digit:]]}
${1//[[:digit:]]}
удаляет цифровую часть${1}
${1//[^[:digit:]]}
удаляет нецифровую часть${1}
ссылка :Advanced Bash Scripting Guide by Mendel Cooper
-121 ---96452 -Это не имеет значения.
Единственный способ взаимодействия с переменными Bash — через Bash, поэтому для вас невозможно заметить какую-либо разницу в том, как переменные хранятся в памяти, потому что вы никогда не сможете получить к ним доступ. через память напрямую , вам всегда нужно запрашивать у Bash их значение, и Bash может затем перевести их так, как он хочет выглядеть так, как если бы они были сохранены в любом специфический способ.
На самом деле, они могут даже вообще не храниться в памяти . Я не знаю, насколько умны распространенные реализации Bash, но, по крайней мере, в простых случаях можно определить, будет ли использоваться переменная и/или будет ли она изменена, и полностью оптимизировать ее или встроить.