Saya ingin melihat apakah sebuah string berada di dalam bagian dari string lain.
misalnya:
'ab' in 'abc' -> true
'ab' in 'bcd' -> false
Bagaimana saya bisa melakukan ini dalam kondisi script bash?
command-line
bash
scripts
Lucio
sumber
sumber
echo
pernyataan. Karena saya mendapatkanab is not in abc
ab was found in abc
, tetapi jika saya menggunakansubstring=z
saya dapatkanz was found in abc
ab is not in abc
. Tapiz was found in abc
. Ini lucu: D[[ "bcd" =~ "ab" ]]
[[ "abc" =~ "ab" ]]
kurung untuk tes, dan karena kurung ganda, bisa jadi beberapa tes tambahan suka
=~
.Jadi Anda bisa menggunakan formulir ini seperti
Edit: dikoreksi "= ~", telah terbalik.
sumber
fail
dengan parameter ini:var2="abcd"
[[ $string =~ $substring ]]
. Saya memperbarui jawabannya.Menggunakan pola nama file bash ( pola alias "glob")
sumber
Dua pendekatan berikut ini akan bekerja pada lingkungan yang kompatibel dengan POSIX, tidak hanya di bash:
Kedua output di atas:
Yang pertama memiliki keuntungan tidak menelurkan
grep
proses yang terpisah .Perhatikan bahwa saya menggunakan
printf %s\\n "${foo}"
bukanecho "${foo}"
karenaecho
mungkin memotong${foo}
jika berisi garis miring terbalik.sumber
xrandr
nama monitor yang disimpan dalam variabel. +1 dan selamat datang di klub rep 1K :)pernyataan kasus shell
Ini adalah solusi paling portabel, akan bekerja bahkan pada cangkang Bourne lama dan cangkang Korn
Contoh dijalankan:
Perhatikan bahwa Anda tidak harus secara khusus menggunakan
echo
Anda dapat menggunakanexit 1
danexit 0
untuk menandakan keberhasilan atau kegagalan.Apa yang bisa kita lakukan juga, adalah membuat fungsi (yang dapat digunakan dalam skrip besar jika perlu) dengan nilai pengembalian spesifik (0 pada pertandingan, 1 pada tidak cocok):
grep
Pendekatan khusus ini berguna dengan pernyataan if-else di
bash
. Sebagian besar juga portabelAWK
Python
Rubi
sumber
Pikirkan
[[
dan"
:Jadi seperti yang dikatakan @glenn_jackman, tetapi ingatlah bahwa jika Anda membungkus seluruh istilah kedua dalam tanda kutip ganda, itu akan mengalihkan tes ke pencocokan literal .
Sumber: http://tldp.org/LDP/abs/html/comparison-ops.html
sumber
Mirip dengan jawaban edwin, tetapi dengan peningkatan portabilitas untuk posix & ksh, dan sentuhan yang tidak terlalu berisik daripada jawaban Richard:
Keluaran:
sumber