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

  • Android Central

    Android Cent

    13 Kasım 2008
  • Bad Lip Reading

    Bad Lip Read

    22 Mart 2011
  • expertvillage

    expertvillag

    5 NİSAN 2006