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

  • FASHTAG

    FASHTAG

    5 EYLÜL 2012
  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • Phymec

    Phymec

    18 Temmuz 2009