Perintahmu,
check=grep -ci 'text' file.sh
akan ditafsirkan oleh shell sebagai "jalankan perintah -ci
dengan argumen text
dan file.sh
, dan atur variabel check
ke nilai grep
di lingkungannya".
Shell menyimpan nilai keluar dari perintah yang paling baru dieksekusi dalam variabel ?
. Anda dapat menetapkan nilainya ke salah satu variabel Anda sendiri seperti ini:
grep -i 'PATTERN' file
check=$?
Jika Anda ingin bertindak berdasarkan nilai ini, Anda bisa menggunakan check
variabel Anda :
if [ "$check" -eq 0 ]; then
# do things for success
else
# do other things for failure
fi
atau Anda dapat melewati menggunakan variabel terpisah dan harus memeriksa $?
semuanya bersama-sama:
if grep -q -i 'pattern' file; then
# do things (pattern was found)
else
# do other things (pattern was not found)
fi
(perhatikan -q
, ia memerintahkan grep
untuk tidak mengeluarkan apa pun dan keluar segera setelah sesuatu cocok; kami tidak benar-benar tertarik dengan apa yang cocok di sini)
Atau, jika Anda hanya ingin "melakukan sesuatu" ketika polanya tidak ditemukan:
if ! grep -q -i 'pattern' file; then
# do things (pattern was not found)
fi
Menyimpan $?
ke variabel lain hanya diperlukan jika Anda perlu menggunakannya nanti, ketika nilai dalam $?
telah ditimpa, seperti pada
mkdir "$dir"
err=$?
if [ "$err" -ne 0 ] && [ ! -d "$dir" ]; then
printf 'Error creating %s (error code %d)\n' "$dir" "$err" >&2
exit "$err"
fi
Dalam cuplikan kode di atas, $?
akan ditimpa oleh hasil [ "$err" -ne 0 ] && [ ! -d "$dir" ]
tes. Menyimpannya di sini benar-benar hanya perlu jika kita perlu menampilkannya dan menggunakannya exit
.
$?
segera setelah perintah selesai.