Portál AbcLinuxu, 12. května 2025 08:54
Třeba tohle by mohlo fungovat
val=`echo -n $char | od -A n -t d1`
Případně na to můžete použít ještě aritmetickou expanzi nebo 'tr -d
', abyste se zbavil přebytečných mezer.
---CUT--- #!/bin/bash ord() { IFS= printf '%d' "'$1" } ordsum(){ local in="$1" local size=${#in} local i=0 local ret=0 for (( i = 0; i <= $size; ++i )) do (( ret += $( ord "${in:0:$i}" ) )) done printf -- '%d' $ret } ordsum "Hello, World!" exit 0 ---CUT---
---CUT--- #!/bin/bash ord() { printf -- '%d' "'$1" } ordsum() { local in="$1" local size=${#in} local i=0 local ret=0 for (( i = 0; i <= $size; ++i )) do (( ret += $( ord "${in:0:$i}" ) )) done printf -- '%d' $ret } ordsum "Hello, World!" exit 0 ---CUT---
ord
asi nebude moc standardní záležitost, aspoň já ho ve svém systému nemám. Navíc vám to bude fungovat jen tehdy, pokud ten příkaz vypíše kód posledního znaku svého argumentu.
#!/bin/bash ord() { printf -- '%d' "'$1" } ord "A" # vypise cislo 65Nerozumim vsak "ten prikaz ... atd." Vysvetlite, co mate na mysli? Mam takovy pocit, ze si nejak nerozumime...
---CUT--- #!/bin/bash ord() { printf -- '%d' "'$1" } ordsum() { local in="$1" local size=${#in} local i=0 local ret=0 for (( i = 0; i <= $size; ++i )) do (( ret += $( ord "${in:$i:1}" ) )) done printf -- '%d' $ret } [[ $(ordsum "ABC") -eq $((65+66+67)) ]] && echo "FUNGUJE!" exit 0 ---CUT---Fakticky se moc omlouvam...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.