我可以让这个在ksh中工作,但不是在bash中,这真的让我疯了.希望这是我忽略的显而易见的事情.
我需要运行一个外部命令,其中输出的每一行都将存储在数组索引中.
这个简化的例子看起来是正确地在循环中设置数组但是在循环完成后这些数组赋值消失了?好像循环被完全视为外壳?
junk.txt
this is a
test to see
if this works ok
Run Code Online (Sandbox Code Playgroud)
testa.sh
#!/bin/bash
declare -i i=0
declare -a array
echo "Simple Test:"
array[0]="hello"
echo "array[0] = ${array[0]}"
echo -e "\nLoop through junk.txt:"
cat junk.txt | while read line
do
array[i]="$line"
echo "array[$i] = ${array[i]}"
let i++
done
echo -e "\nResults:"
echo " array[0] = ${array[0]}"
echo " Total in array = ${#array[*]}"
echo "The whole array:"
echo ${array[@]}
Run Code Online (Sandbox Code Playgroud)
产量
Simple Test:
array[0] = hello
Loop through junk.txt: …Run Code Online (Sandbox Code Playgroud)