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; g
bởi vìf
cần một số đầu vào?g
trong trường hợp đó đầu ra không có gì.