Trong khoa học máy tính (và máy tính thông thường), một biến là một vị trí trong bộ nhớ chứa thông tin tùy ý để sử dụng sau này. Nói cách khác, đó là vùng chứa lưu trữ tạm thời để bạn đưa dữ liệu vào và lấy dữ liệu ra. Trong Bash shell, dữ liệu đó có thể là một từ (một chuỗi , trong biệt ngữ máy tính) hoặc một số (một số nguyên ).
Bạn có thể chưa bao giờ (cố ý) sử dụng một biến trước đây trên máy tính của mình, nhưng có thể bạn đã sử dụng một biến trong một lĩnh vực khác trong cuộc sống của mình. Khi bạn nói những câu như "đưa cho tôi cái đó" hoặc "xem này", bạn đang sử dụng các biến ngữ pháp (bạn nghĩ chúng là đại từ ). Ý nghĩa của "cái này" và "cái kia" tùy thuộc vào bất kỳ điều gì bạn đang hình dung trong đầu hoặc bất kỳ điều gì bạn đang trỏ đến như một chỉ báo để khán giả biết bạn đang đề cập đến điều gì. Khi bạn làm toán, bạn sử dụng các biến để thay thế cho các giá trị không xác định, mặc dù bạn có thể không gọi chúng là các biến.
Bài viết này giải quyết các biến trong PowerShell, chạy trên Windows, Linux hoặc Mac. Người dùng Bash shell mã nguồn mở nên tham khảo bài viết của tôi về các biến trong Bash shell thay thế (mặc dù bạn có thể chạy PowerShell trên Linux và nó là mã nguồn mở, vì vậy bạn vẫn có thể theo dõi bài viết này).
Lưu ý: Các ví dụ trong bài viết này là từ một phiên PowerShell chạy trên hệ điều hành nguồn mở Linux, vì vậy nếu bạn đang sử dụng Windows hoặc Mac, đường dẫn tệp sẽ khác. Tuy nhiên, Windows chuyển đổi / tới \ tự động và tất cả các ví dụ đều hoạt động trên tất cả các nền tảng, miễn là bạn thay thế sự khác biệt rõ ràng (ví dụ:theo thống kê không chắc rằng tên người dùng của bạn là seth ).
Các biến là gì?
Bạn có cần các biến trong PowerShell hay không tùy thuộc vào những gì bạn làm trong một thiết bị đầu cuối. Đối với một số người dùng, các biến là phương tiện thiết yếu để quản lý dữ liệu, trong khi đối với những người khác, chúng chỉ là những tiện ích nhỏ và tạm thời hoặc đối với một số người, chúng cũng có thể không tồn tại.
Cuối cùng, các biến là một công cụ. Bạn có thể sử dụng chúng khi thấy cần thiết hoặc để chúng một mình với sự thoải mái khi biết chúng được quản lý bởi Hệ điều hành của bạn. Tuy nhiên, kiến thức là sức mạnh và việc hiểu cách các biến hoạt động trong Bash có thể đưa bạn đến tất cả các loại giải quyết vấn đề sáng tạo bất ngờ.
Đặt một biến
Bạn không cần các quyền đặc biệt để tạo một biến. Chúng được tự do sáng tạo, miễn phí sử dụng và nói chung là vô hại. Trong PowerShell, bạn tạo một biến bằng cách xác định tên biến và sau đó đặt giá trị của nó bằng Set-Variable yêu cầu. Ví dụ bên dưới tạo một biến mới có tên là FOO và đặt giá trị của nó thành chuỗi $ HOME / Documents :
PS> Set-Variable -Name FOO -Value "$HOME/Documents"
Thành công im lặng một cách kỳ lạ, vì vậy bạn có thể không cảm thấy tự tin rằng biến của bạn đã được thiết lập. Bạn có thể xem kết quả cho chính mình với Biến lấy ( gv gọi tắt) lệnh. Để đảm bảo rằng biến được đọc chính xác như bạn đã xác định, bạn cũng có thể đặt nó trong dấu ngoặc kép. Làm như vậy sẽ bảo toàn bất kỳ ký tự đặc biệt nào có thể xuất hiện trong biến; trong ví dụ này, điều đó không áp dụng, nhưng vẫn là một thói quen tốt cần hình thành:
PS> Get-Variable "FOO" -valueOnly
/home/seth/Documents
Lưu ý rằng nội dung của FOO không đúng như những gì bạn đặt. Chuỗi ký tự mà bạn đặt cho biến là $ HOME / Documents , nhưng bây giờ nó đang hiển thị dưới dạng / home / seth / Documents . Điều này xảy ra vì bạn có thể lồng các biến. $ HOME biến trỏ đến thư mục chính của người dùng hiện tại, cho dù nó nằm trong C:\ Users trên Windows, / home trên Linux hoặc / Users trên máy Mac. Kể từ $ HOME đã được nhúng vào FOO , biến đó được mở rộng khi thu hồi. Sử dụng các biến mặc định theo cách này sẽ giúp bạn viết các tập lệnh di động hoạt động trên các nền tảng.
Các biến thường được dùng để truyền tải thông tin từ hệ thống này sang hệ thống khác. Trong ví dụ đơn giản này, biến của bạn không hữu ích lắm, nhưng nó vẫn có thể truyền đạt thông tin. Ví dụ:vì nội dung của FOO biến là đường dẫn tệp, bạn có thể sử dụng FOO như một lối tắt đến thư mục tham chiếu giá trị của nó.
Để tham chiếu biến FOO Của nội dung chứ không phải bản thân biến, hãy thêm vào trước biến bằng ký hiệu đô la ( $ ):
PS> pwd
/home/seth
PS> cd "$FOO"
PS> pwd
/home/seth/Documents
Xóa một biến
Bạn có thể xóa biến bằng Xóa biến lệnh:
PS> Remove-Variable -Name "FOO"
PS> gv "FOO"
gv : Cannot find a variable with the name 'FOO'.
[...]
Trong thực tế, việc loại bỏ một biến thường không cần thiết. Các biến tương đối "rẻ", vì vậy bạn có thể tạo và quên chúng khi không cần nữa. Tuy nhiên, có thể đôi khi bạn muốn đảm bảo một biến trống để tránh truyền tải thông tin không mong muốn đến một quy trình khác có thể đọc biến đó.
Tạo một biến mới với tính năng bảo vệ khi va chạm
Đôi khi, bạn có thể có lý do để tin rằng một biến đã được thiết lập bởi bạn hoặc một số quy trình khác. Nếu bạn không muốn ghi đè nó, bạn có thể sử dụng Biến mới , được thiết kế để không thành công nếu biến có cùng tên đã tồn tại hoặc bạn có thể sử dụng câu lệnh điều kiện để kiểm tra biến trước:
PS> New-Variable -Name FOO -Value "example"
New-Variable : A variable with name 'FOO' already exists.
Lưu ý: Trong các ví dụ này, giả sử rằng FOO được đặt thành / home / seth / Documents .
Ngoài ra, bạn có thể tạo if đơn giản câu lệnh để kiểm tra một biến hiện có:
PS> if ( $FOO )
>> { gv FOO } else
>> { Set-Variable -Name "FOO" -Value "quux" }
Thêm vào một biến
Thay vì ghi đè một biến, bạn có thể thêm vào một biến hiện có. Trong PowerShell, các biến có nhiều kiểu khác nhau, bao gồm chuỗi, số nguyên và mảng. Về cơ bản, khi chọn tạo một biến có nhiều hơn một giá trị, bạn phải quyết định xem bạn cần một chuỗi được phân tách bằng ký tự hay một mảng. Bạn có thể không quan tâm theo cách này hay cách khác, nhưng ứng dụng nhận dữ liệu của biến có thể mong đợi điều này hoặc cách khác, vì vậy hãy đưa ra lựa chọn dựa trên mục tiêu của bạn.
Để nối dữ liệu vào một biến chuỗi, hãy sử dụng ký tự + = cú pháp:
PS> gv FOO
foo
PS> $FOO += ",bar"
PS> gv FOO
foo,bar
PS> $FOO.getType().Name
String
Mảng là loại biến đặc biệt trong PowerShell và yêu cầu một đối tượng ArrayList. Điều đó nằm ngoài phạm vi của bài viết này, vì nó yêu cầu nghiên cứu sâu hơn về nội bộ .NET của PowerShell.
Toàn cầu hóa với các biến môi trường
Cho đến nay, các biến được tạo trong bài viết này là cục bộ , nghĩa là chúng chỉ áp dụng cho phiên PowerShell mà bạn tạo. Để tạo các biến có thể truy cập được cho các quy trình khác, bạn có thể tạo các biến môi trường, sẽ được đề cập trong một bài viết trong tương lai.