Perintahmu,
check=grep -ci 'text' file.sh
akan ditafsirkan oleh shell sebagai "jalankan perintah -cidengan argumen textdan file.sh, dan atur variabel checkke nilai grepdi 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 checkvariabel 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 grepuntuk 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.