Toán tử '#' trước một biến làm gì khi mở rộng biến?


12

Dưới đây là mã tôi đã thực hiện trong thiết bị đầu cuối

[root@idm ~]# x="$(date +%d%m%y)"    
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6

Ai đó có thể giúp tôi hiểu tại sao đầu ra là 6? #Về cơ bản là làm gì với biến?

Câu trả lời:


25

Đó là một mở rộng tham số trả về độ dài của tham số hoặc số phần tử trong một mảng hoặc số lượng tham số vị trí.

Xin vui lòng đọc hướng dẫn sử dụng vỏ của bạn. Sau đây là từ bashhướng dẫn:

${#parameter}

Độ dài tính bằng giá trị của parameterđược thay thế . Nếu parameter*hoặc @, giá trị được thay thế là số lượng tham số vị trí. Nếu parameterlà một tên mảng được đăng ký bởi *hoặc @, giá trị được thay thế là số phần tử trong mảng. Nếu parameterlà một tên mảng được lập chỉ mục được ghi bởi một số âm, thì số đó được hiểu là tương đối với một lớn hơn chỉ số tối đa của tham số, vì vậy các chỉ số phủ định đếm ngược từ cuối mảng và chỉ số -1 tham chiếu đến phần tử cuối cùng .


Ngoài ra, xin vui lòng không tạo thói quen làm việc trong một vỏ gốc tương tác. Nó nguy hiểm và liều lĩnh nhất. Sử dụng một sudocách tiết kiệm và chỉ trong các tình huống đòi hỏi đặc quyền nâng cao. Chơi xung quanh với bashlà một cái gì đó bạn chắc chắn có thể làm như một người dùng không root bình thường.

Trong vài năm qua, tôi chỉ sử dụng một vỏ gốc tương tác để tự thêm một người dùng. Đó là một công việc dài 2 phút và sau đó tôi không bao giờ cần phải thấy #lời nhắc nữa trên máy đó.


13

Các #nhà điều hành trả về chiều dài của một biến. Trong trường hợp của bạn, xchiều dài thay đổi là sáu.

Xin vui lòng xem Parameter thay thế để biết thêm thông tin.

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.