Tập lệnh này thể hiện định nghĩa hàm bash với dấu ngoặc đơn câu có dấu ngoặc. Dấu ngoặc đơn có hiệu ứng tốt đẹp khi tạo các biến môi trường được tạo trong hàm "cục bộ", tôi đoán là vì thân hàm được thực thi dưới dạng một trình bao con. Đầu ra là:Xác định nội dung hàm bash bằng dấu ngoặc đơn thay vì dấu ngoặc đơn
A=something
A=
B=something
B=something
Câu hỏi đặt ra là nếu điều này được cho phép để xác định hàm.
#!/bin/bash
foo() (
export A=something
echo A=$A
)
bar() {
export B=something
echo B=$B
}
foo
echo A=$A
bar
echo B=$B
đoán sai. Các biến này xuất hiện là cục bộ, vì [lệnh ghép] này (http://wiki.bash-hackers.org/syntax/basicgrammar#compound_commands) được thực hiện trong một nhóm riêng biệt (ngữ cảnh), KHÔNG phải là một vỏ bọc con !! – Florian
@Florian Bash và POSIX gọi đó là "môi trường bán vỏ", có thể đó là ý của anh ấy. Nhưng đúng: không phải là một quá trình mới. –