Apa yang dilakukan operator “:” (titik dua) dalam ekspansi variabel bash: VAR = $ {TEMP: 3}?

12

Apa arti dari baris berikut di dalam variabel bash?

VAR=${TEMP:3}
Karan Shah
sumber
1
@chaos Tolong jangan edit pertanyaan untuk mencocokkan jawaban Anda dengan lebih baik ;-).
Pilot6
@ Pilot6 Saya belum mengubah artinya. Atau apakah saya mengerti sesuatu yang salah? Saya membuatnya lebih baik untuk menemukan (judul) dan lebih mudah dibaca .. BTW : juga memiliki makna lain, itu adalah perintah bash builtin, misalnya. Saya ingin berbeda dari itu, karena pertanyaannya jelas bukan tentang itu. Yang dimaksud pengguna adalah :operator di dalam nama variabel. Maaf, saya tidak ingin mengganggu seseorang, tetapi kemunduran Anda tidak masuk akal dan harus dibalik, tetapi saya tidak ingin perang edit di sini. Selain itu khusus untuk bash dan scripting, jadi mengapa menghapus tag itu?
kekacauan
Anda menghapus TEMPdan VARvariabel dan mengubah pertanyaan cara jawaban lain kehilangan artinya.
Pilot6
@ Pilot6 Dalam jawaban saya, saya tidak merujuk ke VARvariabel. Tetapi, bagaimanapun, Anda bebas untuk mengubah satu hal itu kembali. Saya ingin membuat pertanyaan lebih umum, kurang spesifik. Itu tidak pernah dimaksudkan untuk menyabot jawaban lain.
kekacauan
2
@SnakeDoc tidak, ini tentang topik, oke
muru

Jawaban:

15

Ini adalah ekspansi variabel dan bekerja seperti ini (pemberitahuan ini adalah hanya bashdan kshspesifik dan tidak akan bekerja di POSIX shell):

$ x=1234567890
$ echo ${x:3}
4567890
$ echo ${x:7}
890
$ echo ${x:3:5}
45678

  • ${var:pos}berarti bahwa variabel vardiperluas, mulai dari offset pos.
  • ${var:pos:len}berarti bahwa variabel vardiperluas, mulai dari offset posdengan panjang len.
kekacauan
sumber
Woks zshjuga
kos
2
@kos Tidak layak disebut, karena semuanya bekerja zsh=) Saya membuat skrip diet zshdan menurunkan 10kg dalam 1 minggu.
kekacauan
zshpasti membuat Anda bodoh saat mengetik jalan ketika Anda tidak menggunakannya :)
kos
1
@kos Hehe, Ini agak seperti jquery: meta.stackexchange.com/a/19492
chaos
1
Ha, saya suka bagaimana satu-satunya jawaban yang mencoba untuk benar-benar menjawab pertanyaan didapat -2 karena "tidak cukup jQuery"! :)
kos
2

Operator ini memotong 3 karakter pertama dari variabel TEMPdan memberikan sisanya ke variabel VAR.

Pilot6
sumber