Portál AbcLinuxu, 6. listopadu 2025 21:14
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 65
Nerozumim 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.