2013-05-01 34 views
21


Làm thế nào để gán kết quả của
grep -c "một số văn bản"/tmp/somePath
vào biến vì vậy tôi có thể echo nó.
Cảm ơn!bash script assign grep đếm để biến

#!/bin/bash 
some_var = grep -c "some text" /tmp/somePath 
echo "var value is: ${some_var}" 

Tôi cũng đã cố gắng: some_var = 'grep -c \ "một số văn bản \"/tmp/somePath'

Nhưng tôi tiếp tục nhận: command not found

Cảm ơn

Trả lời

49

Để gán đầu ra của lệnh, hãy sử dụng var=$(cmd) (vì shellcheck tự động cho bạn biết nếu bạn dán tập lệnh của mình ở đó).

#!/bin/bash 
some_var=$(grep -c "some text" /tmp/somePath) 
echo "var value is: ${some_var}" 
+0

Cảm ơn, cho câu trả lời. Nhưng làm thế nào để sử dụng biến đầu vào trong phần thực thi của mã? my_var = $ (grep "word" $ 1) - không hoạt động – Sonique

+0

@Sonique Điều đó sẽ hoạt động nếu bạn sử dụng nó một cách chính xác. –

3
some_var=$(grep -c "some text" /tmp/somePath) 

Từ man bash:

Command substitution allows the output of a command to replace the com‐ 
    mand name. There are two forms: 

      $(command) 
    or 
      `command` 

    Bash performs the expansion by executing command and replacing the com‐ 
    mand substitution with the standard output of the command, with any 
    trailing newlines deleted. 
+3

Bài tập thay đổi ** không thể ** có khoảng trống xung quanh '='. – michaelb958

+1

@ michaelb958 Bạn nói đúng. Bài đăng của tôi đã được sửa trước khi tôi nhận thấy sự cố. –

+0

Lev đây là vấn đề :) – user648026

15


Tìm thấy vấn đề
của sự phân công, điều này sẽ làm việc:

some_var=$(command) 


Trong khi điều này sẽ không làm việc:

some_var = $(command) 


Cảm ơn bạn đã giúp đỡ của bạn! Tôi sẽ chấp nhận câu trả lời hữu ích đầu tiên.

+1

Không thể bỏ phiếu đủ điều này ... Đây là loại câu trả lời khiến tôi biết ơn SO. – Charlie

+1

Cảm ơn rất nhiều về thông tin chi tiết này. Đồng ý với Charlie. Không thể bỏ phiếu đủ điều này. –

Các vấn đề liên quan