Apa sintaks untuk membandingkan substring dari satu string ke variabel string di bash?

Saya mencoba membandingkan substring dari satu variabel string dengan seluruh variabel, dan hasilnya selalu salah.

COMP='<'
if [[ '${SNIP:0:1}' = '$COMP' ]] ;then
  LENG=6
elif [[ '${SNIP:1:1}' = '$COMP' ]] ;then
  LENG=7
else
  LENG=8
fi
echo $SNIP
echo ${SNIP:0:1}
echo ${SNIP:1:1}
echo $COMP
echo $LENG

Saya sudah mencoba juga hanya dengan membandingkan substring dengan '‹', tetapi hasilnya selalu benar.

Saya mengharapkan hasilnya seperti itu

3<a
<
<
7

tapi hasilnya adalah

3<a
<
<
8

dan aku tidak tahu apa yang kacau. Tolong bantu. Terima kasih.


person xehcimal    schedule 24.07.2019    source sumber
comment
Coba tanda kutip ganda " daripada tanda kutip tunggal ' saat menggunakan variabel.   -  person Matthias    schedule 25.07.2019
comment
Oke wow ya, itu saja. Terima kasih banyak   -  person xehcimal    schedule 25.07.2019


Jawaban (1)


Cukup gunakan tanda kutip ganda:

COMP='<'
if [[ "${SNIP:0:1}" = "$COMP" ]] ;then
  LENG=6
elif [[ "${SNIP:1:1}" = "$COMP" ]] ;then
  LENG=7
else
  LENG=8
fi
echo $SNIP
echo ${SNIP:0:1}
echo ${SNIP:1:1}
echo $COMP
echo $LENG

Tanda kutip tunggal tidak akan menginterpolasi apa pun, tetapi tanda kutip ganda akan menginterpolasinya.

https://stackoverflow.com/a/6697781/344480

person Matthias    schedule 24.07.2019