小编use*_*414的帖子

bash在循环中分配数组索引时遇到麻烦

我可以让这个在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)

arrays bash

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

arrays ×1

bash ×1