/ Usr / bin / [nedir ve nasıl kullanırım?


26

Ben coreutils bakıyor ve coreutils parçası olarak dahil dosyalardan biri olarak bu tespit edildi: /usr/bin/[. Nedir [ve ne işe yarar?

Bu bir çalıştırılabilir. Sadece ne yaptığını veya nasıl kullanılacağını bilmiyorum.

$ file / usr / bin / [
/ usr / bin / [: ELF 32-bit LSB çalıştırılabilir, Intel 80386, sürüm 1 (SYSV), dinamik olarak bağlanmış (paylaşılan kütüphaneleri kullanır), GNU / Linux 2.6.15 için, soyulmuş

Çalıştırmaya çalıştığımda, çizgi genişlemesinde yerleşik bash için varsayılan olduğunu düşünüyorum. Aslında dosyayı çalıştırmak yerine.

$ "/ usr / bin / ["
/ usr / bin / [: kayıp ] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [OS X üzerinde çalışır
Daniel Beck

Yanıtlar:


33

Bu komutun bir eşdeğeri test. (Bkz info test.) Genel olarak, aşağıdaki gibi koşullu ifadelerde komut dosyalarında kullanırsınız:

if [ -n "$1" ]; then
    echo $1
fi

Koşullu içine almak için kapanış dirseği gerekir. (Sadece kodda daha güzel görünmek için gerekli gibi görünüyor. Bunun için başka bir pratik sebep bilen var mı?)


3
Not [olan iki dahili bir kabuk ve aynı (veya benzeri) kullanımı ile bir dış program. Kısacası, koşarken [ya testda yerleşik olarak çağırıyorsun.
Grawity

Gerekir, çünkü isteğe bağlı olsaydı, sözdizimi belirli durumlarda belirsiz olurdu.
Random832 12:11

20

testKomuta eşdeğerdir .

Yerine

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

Kullanabilirsiniz:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

Döngülerde de kullanılabilir:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

Bunları aynı şekilde tek gömleklerde de kullanabilirsiniz:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
nasıl kullanılacağına dair güzel örnekler. "if / usr / bin / ["
nelaaro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.