Saya hanya mencari cara yang tepat dan lebih elegan untuk menulis kode berikut di Bash:
in_array() {
local somearray=${1}[@]
local somevalue=${2}
for i in ${!somearray}; do
if [[ ${i} == ${somevalue} ]]; then
return 0
fi
done
return 1
}
#declare array
declare -a myArray=(foo bar baz qux)
#defined values
val1=foo
val2=baz
#Ugly check if multiple strings are part of the array at the same time
if in_array myArray $val1 && in_array myArray $val2; then
# Do something #
else
# Do something else#
fi
Ide dasarnya adalah bahwa saya perlu memeriksa apakah 2 ore lebih banyak nilai statis, pada saat yang sama, merupakan bagian dari array. Bertanya-tanya apakah ada cara yang lebih baik untuk melakukan ini, karena jika saya perlu memeriksa lebih dari 3-4 nilai ... if in_array
garis itu akan menjadi besar.
Ada saran, tolong?
Terima kasih!
@ choroba - maaf .. Seharusnya saya memeriksa sintaks dengan lebih baik saat diposting. Anda benar
—
Marin Nedea
@ Rushur - silakan periksa lagi pertanyaan saya ..
—
Marin Nedea
@MarinNedea Ada saran, tolong?
—
Hastur
-->
periksa jawaban dari tautan-tautan itu ... misalnya ketika mereka menyarankan =~
(untuk kejelekan - itu lebih mudah dibaca) atau ketika mereka mengusulkan untuk menyanjung array dan mencari substring *"two"*
(Anda dapat mencoba *$var1*
&& *$var1*
) ... BTW Saya pikir Anda bisa setuju lebih baik benar-benar relatif ... :-)
lebih baik untuk membaca, lebih baik karena lebih efisien (Anda perlu menggunakan fungsi yang berbeda sebagai jawaban Anda ... untuk memecahkan pertama kali Anda tidak menemukan ...) ...?
"$(foo, bar, baz, qux)"
seharusnya mungkin(foo bar baz qux)
,$val22
seharusnya$val2
.