Cách gán đầu ra con mèo của tập lệnh bash cho một biến trong tập lệnh khác


29

Tôi có một tập lệnh bash tạo ra một đầu ra con mèo khi nó cần một đối số. Tôi cũng có một tập lệnh bash khác thực thi tập lệnh bash đầu tiên với một đối số mà tôi muốn tạo ra kết quả đầu ra của mèo. Làm cách nào để lưu trữ các kết quả đầu ra của mèo được tạo bởi tập lệnh bash đầu tiên trong các biến?

Câu trả lời:


38
var=$( cat foo.txt )

sẽ lưu trữ đầu ra của catbiến var.

var=$( ./myscript )

sẽ lưu trữ đầu ra của myscriptcùng một biến.


5
Mẹo nhanh cho những người mới sử dụng bash như tôi, khoảng cách & không khoảng cách đều quan trọng, hãy làm theo mẫu chính xác! ví dụ var = $( cat foo.txt )sẽ không hoạt động
sojim2

@Dalker có giới hạn mức độ lớn của foo.txt không? Tôi có hơn 10 mb dữ liệu. Mèo sẽ lưu trữ toàn bộ? Tôi muốn biết nếu có một giới hạn cũng để tham khảo trong tương lai.
tôi

@sojim Bạn có biết câu trả lời này không?
tôi

1
@myhouse Theo câu trả lời này, không có giới hạn do bản thân bash, nhưng giới hạn là bộ nhớ được phân bổ trên môi trường bên dưới, tất nhiên có thể khác nhau.
Dalker

3

Sử dụng dấu ngoặc kép. Thử đi

var="$(cat foo.txt)"

3
Hầu như không bao giờ là một ý tưởng tồi để đặt mọi thứ (đặc biệt là những thứ bắt đầu $) vào dấu ngoặc kép và nó không bị tổn thương ở đây. Tuy nhiên, trong trường hợp gán cho một biến, nó không thực sự có ích.
G-Man nói 'Phục hồi Monica'

@ G-Man: Điều gì xảy ra nếu biến đó chứa dòng mới hoặc tab mà chúng ta muốn ở lại biến?
29 phút

@jvriesem: Nếu nó thì sao? Bạn có câu hỏi nào không?
G-Man nói 'Tái lập Monica'

Khi tôi chạy lệnh này, nó dường như thoát khỏi tất cả các dòng mới của tôi.
K. Carpenter
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.