SORU
2 EYLÜL 2013, PAZARTESİ


bağımsız denetleme sayısı script bash

Eğer senaryomu çok fazla (veya çok az) bağımsız değişkenleri alır eğer bir hata mesajı yazdırmak için çalışıyorum.

Aşağıdaki kodu denedim:

#!/bin/bash
echo Script name: $0
echo $# arguments 
if [$# -ne 1]; 
    then echo "illegal number of parameters"
fi

Bilinmeyen bir nedenden dolayı aşağıdaki hata var:

test: line 4: [2: command not found

Neyi yanlış yapıyorum? (Bash tamamen yeni değilim)

CEVAP
2 EYLÜL 2013, PAZARTESİ


Tıpkı herhangi bir başka basit komut, [ ... ] test bağımsız değişkenler arasında boşluk gerektirir.

if [ "$#" -ne 1 ]; then
    echo "Illegal number of parameters"
fi

Ya

if test "$#" -ne 1; then
    echo "Illegal number of parameters"
fi

Bash, alıntı bu değişkenleri word yarma ve yol genişletme yapmaz yerine [[ ]] kullanmayı tercih zaman bir ifadenin bir parçası değilse gerekli olmayabilir.

[[ $# -ne 1 ]]

Aynı zamanda, desen eşleştirme (extglob ile genişletilmiş desen eşleştirme) ve düzenli ifade eşleştirme gruplandırma tırnaksız durumu gibi diğer bazı özellikleri vardır.

Aşağıdaki örnek, eğer argümanlar geçerli olup olmadığını kontrol eder. Tek bir tartışma ya da iki sağlar.

[[ ($# -eq 1 || ($# -eq 2 && $2 == <glob pattern>)) && $1 =~ <regex pattern> ]]

Saf aritmetik ifadeler kullanarak (( )) bazı olabilir hala daha iyi olabilir, ama onlar hala mümkün [[ ]] aritmetik operatörler gibi -eq, -ne, -lt, -le, -gt, veya -ge yerleştirerek ifadesi olarak tek bir dize bağımsız değişken:

A=1
[[ 'A   1' -eq 2 ]] && echo true  ## Prints true.

Eğer [[ ]] diğer özellikleri ile birleştirmek için de ihtiyacınız varsa, yardımcı olmalıdır.

Referanslar:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • LearnKey

    LearnKey

    19 AĞUSTOS 2008