我尝试以下一种方式定义数组:
#!/bin/bash
function try {
local arr=()
sort -n a.txt | while read line; do
arr=("${arr[@]}" "${line}")
declare -p arr
done
declare -p arr
}
try
我得到一个奇怪的事情 - 在while
数组更新期间,一切正常。但是在while循环之外我得到的是arr是空的。
这里发生了什么?
编辑:在第一个回答之后,用这种方式做什么(没有像他的建议那样的管道):
#!/bin/bash
function try {
local arr=()
while read line; do
arr+=("${line}")
declare -p arr
done < "`sort -n a.txt`"
declare -p arr
}
try
答案 0 :(得分:0)
这样做(需要bash):
#!/usr/bin/env bash
# declare an array
arr=()
# loop through results of sort and populate an array
while read -r line; do
arr+=( "$line" )
done < <(sort -n a.txt)
# Check array content
declare -p arr
array+=(item)
语法将项附加到数组请注意,使用bash
您还可以使用mapfile
并避免while
循环:
mapfile -t arr < <(sort -n a.txt)