Ai đó có thể giúp giải thích như sau:Bash Scripting - vỏ lệnh đầu ra chuyển hướng
Nếu tôi gõ:
a=`ls -l`
Sau đó, đầu ra của lệnh ls được lưu trong biến a
nhưng nếu tôi thử:
a=`sh ./somefile`
Kết quả được đưa vào vỏ (stdout
) thay vì biến số a
Điều tôi mong đợi là hoạt động kết quả của hệ vỏ cố thực hiện một đoạn 'somefile
' được lưu trữ trong biến.
Hãy chỉ ra những gì sai với sự hiểu biết của tôi và một cách có thể để làm điều này.
Cảm ơn.
EDIT:
Chỉ cần làm rõ, kịch bản 'somefile
' có thể hoặc không tồn tại. Nếu nó tồn tại sau đó tôi muốn đầu ra của tập lệnh được lưu trữ trong 'a
'. Nếu không, tôi muốn thông báo lỗi "không có tệp hoặc thư mục" được lưu trữ trong 'a
'
không phải về quyền ... tôi muốn các thông báo lỗi hoặc trả lại giá trị được lưu trữ trong biến. –
Điều tôi đang nói là bạn không cần chạy sh để chạy kịch bản (và sh sẽ áp đặt tường lửa của riêng nó trên đầu ra nếu bạn làm). Chỉ cần chạy kịch bản trực tiếp và, cho rằng, bạn cần phải 'chmod + x' nó. – paxdiablo
Hãy thử các cách sau: "chmod u + x somefile; a ='. – paxdiablo