Dalam proses penulisan skrip shell, saya mengalami masalah dengan pernyataan if / else berikut yang berada di suatu tempat di tengah-tengah skrip:
if [ $act -eq "add" ]
then
read - "add or update: " $comm
git commit -m "$comm $file"
else
git commit -m "$act $file"
fi
Kesalahan pengembalian adalah:
./gitup: line 13: [: add: integer expression expected
dan kemudian melanjutkan dengan sisa skrip. Bagaimana saya bisa memiliki segmen if mengevaluasi / membandingkan variabel ke input string daripada integer; diperlukan kesalahan berbeda saat menggunakan "! =" di antara beberapa hal lain yang saya coba.
bash
shell-script
bash-scripting
tony_perkis666
sumber
sumber
[[]]
tes ini adalah konstruk spesifik Bash, dan contoh ini berfungsi dengan baik dengan POSIX[]
seperti yang digunakan dalam pertanyaan. Jika juru bahasa secara eksplisit diberikan sebagai#!/bin/bash
atau serupa,[[]]
dapat digunakan tanpa masalah (dan itu sedikit lebih cepat daripada alternatif di Bash , saya percaya - bukan itu harus menjadi leher botol tetap), kalau tidak, orang harus tetap dengan[]
. Jika seseorang tidak membutuhkan spesifik Bash sama sekali, skrip akan berjalan sedikit lebih cepat di misalnya Dash. Dan POSIX memastikan portabilitas yang melekat.Metode ini juga akan berhasil. Sangat mirip dengan jawaban @ Guru tetapi menghilangkan kebutuhan akan tanda kurung ganda.
sumber