Giriş
File operators:-a FILE True if file exists.-b FILE True if file is block special.-c FILE True if file is character special.-d FILE True if file is a directory.-e FILE True if file exists.-f FILE True if file exists and is a regular file.-g FILE True if file is set-group-id.-h FILE True if file is a symbolic link.-L FILE True if file is a symbolic link.-k FILE True if file has its `sticky' bit set.-p FILE True if file is a named pipe.-r FILE True if file is readable by you.-s FILE True if file exists and is not empty.-S FILE True if file is a socket.-t FD True if FD is opened on a terminal.-u FILE True if the file is set-user-id.-w FILE True if the file is writable by you.-x FILE True if the file is executable by you.-O FILE True if the file is effectively owned by you.-G FILE True if the file is effectively owned by your group.-N FILE True if the file has been modified since it was last read.String operators:-z STRING True if string is empty.-n STRING True if string is not empty.Other operators:-o OPTION True if the shell option OPTION is enabled.-v VAR True if the shell variable VAR is set.-R VAR True if the shell variable VAR is set and is a name reference.
Shortcut Syntax
Şöyle yaparız. Burada hem test komutu hem de parantez içindeki komutların if/else veya shortcut syntax ile kullanımı gösteriliyor.
if [ -e /tmp/signal.txt ]; then /opt/myscript.sh; fi
# or
if test -e /tmp/signal.txt; then /opt/myscript.sh; fi
# or shortcut syntax
[ -e /tmp/signal.txt ] && /opt/myscript.sh
# or
test -e /tmp/signal.txt && /opt/myscript.sh
-eq seçeneği - Eşitlik kontrolü
Örnek
Şöyle yaparız.
-n seçeneği - String boş değilse - True if string is not empty
Şöyle yaparız.
if [ "$#" -eq 1 ] && [ -f "$1" ]; then
-n seçeneği - String boş değilse - True if string is not empty
String boş değilse 1 döner, boşsa 0 döner
Örnek
Şöyle yaparız. If/else yazmanın bir başka yolu
# Check existence of JAVA_HOME[ -n "${JAVA_HOME:-}" ] &&
{ echo "JAVA_HOME check: ADDED"; export PATH="${JAVA_HOME}/bin:$PATH"; } ||
{ echo "JAVA_HOME check: MISSING"; }
Örnek
Şöyle yaparız. Bir komut çalıştırıp çıktısını alırız ve eğer çıktı boş değilse dosyaya yazdırırız
Şöyle yaparız
Şöyle yaparız. Bir komut çalıştırıp çıktısını alırız ve eğer çıktı boş değilse dosyaya yazdırırız
var=$(mycommand)
[[ -n $var ]] && printf '%s\n' "$var" > myfile
ÖrnekŞöyle yaparız
if [ -n "${_CE_CONDA}" ] && [ -n "${WINDIR+x}" ]; then
...
else
...
fi
Şöyle yaparız. Burada "command substitution" yapılıyor. Sonra -n ile string'in boş olmadığı kontrol ediliyor.
if [ "$(id -u)" -eq 0 ]
then
if [ -n "$SUDO_USER" ] #String boş değilse 1 döner
then
printf "This script has to run as root (not sudo)\n" >&2
exit 1
fi
printf "OK, script run as root (not sudo)\n"
else
printf "This script has to run as root\n" >&2
exit 1
fi
-v seçeneği - Değer Atanmış Değişken Kontrolü -True if the shell variable VAR is set.
Örnek
Elimizde şöyle bir kod olsun. USR1 signal gelirse ve sleep_pid değişkenine değer atanmışsa kontrolü yapılabiliyor.
#!/usr/bin/env bash
kill_the_sleeper () {
if [ -v sleep_pid ]; then
kill "$sleep_pid"
fi
}
trap kill_the_sleeper USR1 EXIT
while true; do
# Signals don't interrupt foreground jobs,
# but they do interrupt "wait"
# so we "sleep" as a background job
sleep 5m &
# We remember its PID so we can clean it up
sleep_pid="$!"
# Wait for the sleep to finish or someone to interrupt us
wait
# At this point, the sleep process is dead (either it finished, or we killed it)
unset sleep_pid
# PART X: code that executes every 5 mins
done
Bu script çalışırken USR signal gönderilir. Şöyle yaparız
kill -USR1 "$pid_of_the_script"veyapkill -USR1 -f my_fancy_script
-z seçeneği - True if string is empty
Hiç yorum yok:
Yorum Gönder