Perhatikan bahwa jika Anda ingin menentukan apakah suatu variabel disetel, Anda mungkin tidak ingin menggunakan if/else atau test ([). Lebih umum melakukan hal-hal seperti:
# Abort if JAVA_HOME is not set (or empty) : ${JAVA_HOME:?JAVA_HOME is unset}
atau
# report the value of JAVA_HOME, or a default value echo ${JAVA_HOME:-default value}
atau
# Assign JAVA_HOME if it is unset (or empty) : ${JAVAHOME:=default value}
if [ -z $JAVA_HOME ]
then
echo $JAVA_HOME
else
echo "NO JAVA HOME SET"
fi
Anda mengalami batasan bodoh tentang cara sh
memperluas argumen. Baris 3 skrip Anda sedang diperluas ke:
if [ != ]
sh
yang mana tidak tahu apa yang harus dilakukan dengan. Cobalah peretasan jahat ini untuk ukuran:
if [ x$JAVA_HOME != x ]
Kedua argumen harus tidak kosong, jadi kita hanya akan melempar x
ke keduanya dan lihat apa yang terjadi.
Alternatifnya, ada operator terpisah untuk menguji apakah sebuah string tidak kosong:
if [ !-z $JAVA_HOME ]
(-z
menguji apakah string berikut kosong.)
-n
dan -z
opsi adalah tes yang harus digunakan di sini:
if [ -n "$JAVAHOME" ]; then
echo "$JAVAHOME";
else
echo "\$JAVAHOME not set";
fi
Bagaimana cara membaca baris kedua hingga terakhir dalam file menggunakan Bash?
mengotomatiskan sesi telnet menggunakan skrip bash