Що означає оператор “:” (двокрапка) у розширенні змінної bash: VAR = $ {TEMP: 3}?


12

Яке значення наступного рядка в змінній в bash?

VAR=${TEMP:3}

1
@chaos Будь ласка, не редагуйте питання, щоб краще відповідати вашій відповіді ;-).
Пілот6

@ Pilot6 Я не змінив значення. Або я розумію щось не так? Я зробив це краще знайти (заголовок) і читабельніше .. У BTW : є також інші значення, наприклад, це bash вбудована команда. Я хотів відрізнятися від цього, адже питання, очевидно, не в тому. Користувач означає :оператора всередині імені змінної. Вибачте, я не хочу когось дратувати, але ваш відкат не має сенсу і його слід змінити, але я не хочу тут редагувати війну. Крім того, це bash та сценарії, специфічні, тож навіщо видаляти ці теги?
хаос

Ви видалили TEMPі VARзмінні, і змінили питання так, як інші відповіді втратили значення.
Пілот6

@ Pilot6 У своїй відповіді я не посилаюся на VARзмінну. Але, однак, ти можеш змінити це одне. Я хотів зробити питання більш загальним, менш конкретним. Ніколи не передбачалося саботажу інших відповідей.
хаос

2
@SnakeDoc ні, це на тему все в порядку
muru

Відповіді:


15

Це змінне розширення і працює так (зауважте, це лише bashта kshспецифічно і не працюватиме в оболонці POSIX):

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

  • ${var:pos}означає, що змінна varрозширюється, починаючи зі зміщення pos.
  • ${var:pos:len}означає, що змінна varрозширюється, починаючи від зміщення posдовжини len.

Заглядає zshтеж
kos

2
@kos Не варто згадувати, тому що все працює в zsh=) Я склав сценарій дієти в zshі за 1 тиждень втратив 10 кг.
хаос

zshнапевно змушує вас тупіше вводити шляхи, коли ви не використовуєте його :)
kos

1
@kos Hehe, це трохи схоже на jquery: meta.stackexchange.com/a/19492
хаос

1
Так, мені подобається, що єдину відповідь, що намагається реально відповісти на питання, отримано -2 через "недостатньо jQuery"! :)
kos


2

Цей оператор відсікає перші 3 символи змінної TEMPта присвоює решту змінній VAR.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.