Större, mindre eller likamed?

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2006-05-18 16:54

Har försökt hitta hur man kan göra ett shellscript med IF komandot som fångar ett tal om det är större än osv.

read varde
if [ "$varde" = "1-9"; then echo "mindre an 10"
else ....

Gärna lite olika förslag på syntax för större, minde, likamed osv.

  • Medlem
  • Varberg
  • 2006-05-18 17:39

man test:

s1 = s2       True if the strings s1 and s2 are identical.

     s1 != s2      True if the strings s1 and s2 are not identical.

     s1 < s2       True if string s1 comes before s2 based on the ASCII value
                   of their characters.

     s1 > s2       True if string s1 comes after s2 based on the ASCII value
                   of their characters.

Likamed och dess vänner använder man alltså bara för strängar. Det du letar efter är följande:

n1 -eq n2     True if the integers n1 and n2 are algebraically equal.

     n1 -ne n2     True if the integers n1 and n2 are not algebraically equal.

     n1 -gt n2     True if the integer n1 is algebraically greater than the
                   integer n2.

     n1 -ge n2     True if the integer n1 is algebraically greater than or
                   equal to the integer n2.

     n1 -lt n2     True if the integer n1 is algebraically less than the inte-
                   ger n2.

     n1 -le n2     True if the integer n1 is algebraically less than or equal
                   to the integer n2.

Exempel:

read varde
[ $varde -lt 10 ] && echo "mindre an 10" || echo "storre an 10"
  • Medlem
  • 2006-05-18 17:49

En får tacke så mycke!

"Test" var det som jag skulle sökt på förstås...

  • Medlem
  • 2006-05-29 16:06

Hjälp! Variabel, antal tecken?

Hej!

Någon som vet hur man kör ett test i bash på hur många tecken en variabel är på?
Låt säga att jag vill testa om en variabel är två bokstäver (ja/nej).

Jag gav upp på detta och prövade denna variant som inte fungerar.
Jag har tänkt att ha ett antal godkända värden här tex. AA & BB
Har läst man-sidorna för test men dessa var ganska fattiga.

read varde1
if [ $varde1 = AA ]
or
[ $varde1 = BB ]
then
osv.....

  • Medlem
  • Varberg
  • 2006-05-29 17:14
Ursprungligen av Jipod:

Hej!

Någon som vet hur man kör ett test i bash på hur många tecken en variabel är på?
Låt säga att jag vill testa om en variabel är två bokstäver (ja/nej).

Följande exempel kanske är lite overkill för dig. Jag använder dock denna mall hämtad ifrån OpenBSDs installationsscript när jag vill ställa frågor till användare i shellscript:

# Ask for user input.
#
#    $1    = the question to ask the user
#    $2    = the default answer
#
# Save the user input (or the default) in $resp.
ask() {
        local _question=$1 _default=$2

        set -o noglob
        while :; do
                echo -n "$_question "
                [[ -z $_default ]] || echo -n "[$_default] "
                read resp
                case $resp in
                *)        : ${resp:=$_default}
                        break
                        ;;
                esac
        done
        set +o noglob
}

# Ask the user for a y or n, and insist on 'y', 'yes', 'n' or 'no'.
#
#    $1    = the question to ask the user
#    $2    = the default answer (assumed to be 'n' if empty).
#
# Return 'yes' or 'no' in $resp.
ask_yn() {
        local _q=$1 _a=${2:-no} _resp
        typeset -l _resp

        while :; do
                ask "$_q" "$_a"
                _resp=$resp
                case $_resp in
                y|yes)        resp=yes ; return ;;
                n|no)        resp=no ; return ;;
                esac
        done
}

Funktionerna används sedan på följande sätt:

ask_yn "Do you want to commit this?"
[[ ${resp} == "no" ]] && exit
  • Medlem
  • International user
  • 2006-05-29 16:12

Antal tecken i en variabel

c1:~ admin$ a=Wire
c1:~ admin$ echo -n $a | wc -c
       4
c1:~ admin$ 

  • Medlem
  • International user
  • 2006-05-29 16:18
if [  $varde1 = AA ] || [ $varde1 = BB ]
then
 moohaaa
fi
1
Bevaka tråden