2012-03-30 99 views
6

Tôi đang cố gắng gán đầu ra của lệnh cắt cho biến, tuy nhiên tôi đang gặp vấn đề lạ. Tôi đang sử dụng shell tcsh.Gán đầu ra của lệnh cho biến hệ vỏ

$echo $0 
tcsh 

Đây là lệnh Tôi đang chạy: (. Cũng đây là không phải là tập tin tôi đã làm việc trên nhưng tôi giảm được vấn đề này)

$set a=`cut -f2 -d' ' test.txt` 
Missing }. //This is the output I am getting 

Bây giờ tập tin được thực đơn giản

Test.txt:

{ {corner 

Thats nó! Đây là tập tin. Nếu tôi thay đổi các tập tin này:

{ {corner} 

Tuyên bố công trình nhưng "a" được giá trị sau:

$echo $a 
corner //Please note its not {corner} but corner 

Do đó tôi nghĩ rằng vỏ đó đang cố gắng để thực hiện {corner như một lệnh và từ trước đến nay thiếu dấu ngoặc đơn đóng. Có ai có bất kỳ ý tưởng tại sao nó hiển thị hành vi này? Sự hiểu biết của tôi là nó chỉ cần chỉ định đầu ra của cắt cho biến nhưng có vẻ như nó chỉ định nó đệ quy! Newbie

Trả lời

5

Bạn phải quấn nó xung quanh dấu ngoặc kép

set a="`cut -f2 -d' ' test.txt`" 

Tương tự áp dụng để sử dụng như echo

echo "$a" 

Output

{corner 
+0

Điều đó sẽ không làm việc như OP dự định. Điều đó sẽ chỉ gán "Missing}" cho a. – Ketan

+0

Không có tác phẩm này! thử echo "$ a" không echo $ a. Nhưng tôi bối rối là tại sao chúng ta phải làm điều này? – Richeek

+0

Tệ của tôi. Tôi đã bỏ lỡ các dấu ngoặc kép khi lặp lại $ a. – Ketan