Toán tử nào: Nồng độ (dấu hai chấm) trong phần mở rộng biến bash: VAR = $ {TEMP: 3}?


12

Ý nghĩa của dòng sau trong một biến trong là bashgì?

VAR=${TEMP:3}

1
@chaos Vui lòng không chỉnh sửa câu hỏi để phù hợp với câu trả lời của bạn hơn ;-).
Pilot6

@ Pilot6 Tôi chưa thay đổi ý nghĩa. Hay tôi hiểu điều gì sai? Tôi đã làm cho nó tốt hơn để tìm (tiêu đề) và dễ đọc hơn .. BTW : cũng có ý nghĩa khác, đó là một lệnh bash dựng sẵn, ví dụ. Tôi muốn khác với điều đó, bởi vì câu hỏi rõ ràng không phải về điều đó. Những gì người dùng có nghĩa là :toán tử bên trong một tên biến. Tôi xin lỗi, tôi không muốn làm phiền ai đó, nhưng việc khôi phục của bạn không có ý nghĩa và nên được đảo ngược, nhưng tôi không muốn một cuộc chiến chỉnh sửa ở đây. Hơn nữa, đó là bash và script cụ thể, vậy tại sao lại xóa các thẻ đó?
hỗn loạn

Bạn đã loại bỏ TEMPVARbiến và thay đổi câu hỏi theo cách mà các câu trả lời khác mất nghĩa.
Pilot6

@ Pilot6 Trong câu trả lời của tôi, tôi không đề cập đến một VARbiến. Nhưng, tuy nhiên, bạn có thể tự do thay đổi điều đó trở lại. Tôi muốn làm cho câu hỏi chung chung hơn, ít cụ thể hơn. Nó không bao giờ có nghĩa là phá hoại các câu trả lời khác.
hỗn loạn

2
@SnakeDoc không, nó đúng chủ đề
muru

Câu trả lời:


15

Đây là mở rộng biến và hoạt động như thế này (lưu ý rằng điều này chỉ bashkshcụ thể và sẽ không hoạt động trong vỏ POSIX):

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

  • ${var:pos}có nghĩa là biến varđược mở rộng, bắt đầu từ offset pos.
  • ${var:pos:len}có nghĩa là biến varđược mở rộng, bắt đầu từ offset posvới chiều dài len.

Chảo zshcũng vậy
kos

2
@kos Không có gì đáng nói, vì mọi thứ đều hoạt động zsh=) Tôi đã thực hiện một kịch bản ăn kiêng zshvà giảm 10kg trong 1 tuần.
hỗn loạn

zshchắc chắn sẽ khiến bạn trở nên ngu ngốc khi gõ các đường dẫn khi bạn không sử dụng nó :)
kos

1
@kos Hehe, Nó hơi giống jquery: meta.stackexchange.com/a/19492
hỗn loạn

1
Ha, tôi thích cách câu trả lời duy nhất cố gắng thực sự trả lời câu hỏi có -2 vì "không đủ jQuery"! :)
kos


2

Toán tử này cắt bỏ 3 ký tự đầu tiên của biến TEMPvà gán phần còn lại cho biến VAR.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.