a) Đầu ra của lệnh1 có thể được bắt với
output=$(diff "helloworld$x.out" "output/helloworld$x.out")
hoặc với backticks, nhưng chúng không được khuyến khích, vì bạn không thể lồng chúng và chúng có thể khó phân biệt với dấu nháy đơn, tùy thuộc vào phông chữ:
output=`cmd1`
b) Thay vì ghi vào một tệp, sau đó đọc tệp đó, (hoặc lấy đầu ra, sau đó lặp lại), bạn sẽ sử dụng một đường ống trực tiếp:
cmd1 > file
cat file | cmd2
output=$(cmd1)
echo "${output}" | cmd2
=>
cmd1 | cmd2
nhưng trong ví dụ của bạn, bạn không quan tâm đến đầu ra, nhưng kết quả của chương trình - nó có hoạt động không?
diff "helloworld$x.out" "output/helloworld$x.out" && echo "success" || echo "failure"
Để đọc về việc sử dụng && và || tìm kiếm "phím tắt VÀ và phím tắt HOẶC".
Để giữ đầu ra sạch sẽ, bạn có thể chuyển hướng đầu ra của 'diff' sang hư không:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null && echo "success" || echo "failure"
Để lấy thành công và đánh giá nó sau, bạn lưu trữ kết quả của lệnh cuối cùng trong một biến có $?:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null
result=$?
# do something else
case $result in
0) echo success ;;
*) echo failure ;;
esac
... > /dev/null
làm trong bối cảnh này. Đầu ra của diff sẽ goto / dev / null nhưng không phải là không có gì?