Bash 4.3.30
Giả sử bạn có đoạn mã sau:
#!/bin/bash
declare -A map
f() {
map[x]=a
map[y]=b
}
g() {
for k in "${!map[@]}"
do
echo "$k --> ${map[$k]}"
done
}
f
g
Đầu ra này
x --> a
y --> b
Nếu tôi thay đổi chương trình đã đề cập ở trên thành f | g nó không có kết quả.
Tôi cho rằng việc khai báo mảng kết hợp trong phạm vi toàn cầu sẽ cho phép tôi truy cập các giá trị của nó bất cứ lúc nào và bất cứ nơi nào tôi muốn. Tôi đã đọc về các vấn đề lạ với đường ống và phạm vi nhưng tôi không thể tìm ra giải pháp.
cat file.txt | f; gbởi vìfcần một số đầu vào?gtrong trường hợp đó đầu ra không có gì.