Arrays Bash中的数组:显示数组的所有元素 echo“Enter N”#输入N表示循环的输入数量 读N#读N #使用c型循环 对于((i=1;i
您继续使用Arrays Bash中的数组:显示数组的所有元素 echo“Enter N”#输入N表示循环的输入数量 读N#读N #使用c型循环 对于((i=1;i,arrays,linux,bash,shell,Arrays,Linux,Bash,Shell,您继续使用read-a重新定义array。代码应该这样编写: echo "Enter N " # enter N for number of inputs for the loop read N # reading the N #using c-style loop for((i=1;i<=N;i++)) do read -a arr # arr is the
read-a
重新定义array
。代码应该这样编写:
echo "Enter N " # enter N for number of inputs for the loop
read N # reading the N
#using c-style loop
for((i=1;i<=N;i++))
do
read -a arr # arr is the name of the array
done
echo ${arr[*]} # 1
echo ${arr[@]} # 2
您不断使用
read-a
重新定义array
。代码应该这样编写:
echo "Enter N " # enter N for number of inputs for the loop
read N # reading the N
#using c-style loop
for((i=1;i<=N;i++))
do
read -a arr # arr is the name of the array
done
echo ${arr[*]} # 1
echo ${arr[@]} # 2
要能够在循环中填充数组,请使用:
$ bash ./dummy.sh
Enter N
2
3
4
3 4
3 4
完整代码:
arr+=("$var")
read-p'输入N:'N
arr=()#初始化数组
#循环N次并追加到数组中
对于((i=1;i)能够在循环使用中填充数组:
$ bash ./dummy.sh
Enter N
2
3
4
3 4
3 4
完整代码:
arr+=("$var")
read-p'输入N:'N
arr=()#初始化数组
#循环N次并追加到数组中
对于((i=1;i
您正在读取数组arr
中的数据,并试图打印array
您正在读取数组arr
中的数据,并试图打印array
两者都将显示内容。您还可以手动使用${array[@]}中的i使用declare-p array
和do echo$i;done
或for((i=0;i<${array[@]};i++);do echo${array[$i]};done
(如果包含空格,您应该引用数组)但是,如果您试图在循环的单独行中输入值,您将只能读取最后一个元素。这两个元素都将显示内容。您还可以手动使用${array[@]}中的i使用declare-p array
和for i;do echo$i;done
或for((i=0;i<${array[@]};i++);do echo${array[$i]};done
(如果包含空格,则应引用数组)但是,如果尝试在循环中的单独行中输入值,则只能读取最后一个元素。echo
方法都有缺陷——尝试在数组中输入*
作为值;您将看到两个元素都没有正确打印。declare-p array
是最佳实践,如果明确的输出是顶级priority.printf'%q\n'${array[@]}
是一种合理的折衷方法,因为它用常规shell引号转义的值一对一地打印每个条目;printf'%s\0'${array[@]}
是为机器(而非人类)消费生成输出时的最佳做法,因为它会逐字地发出所有值,并用NUL分隔它们。(这特别不适合人类,因为终端不打印NUL)@StefanBecker Yes当我输入*作为输入时,它没有显示所需的输出。你能解释一下为什么会发生这种情况吗?echo
方法都有缺陷——试着在数组中输入*
作为值;你会发现没有一个正确地打印它。declare-p array
是最好的做法,如果明确的输出是最高优先级。printf'%q\n'${array[@]}
是一个合理的折衷方案,因为它使用常规shell引号转义的值一对一地打印每个条目;printf'%s\0'${array[@]}
是为机器(非人工)生成输出时的最佳实践消费,因为它逐字逐句地发出所有值,并用NUL分隔它们。(这对人类尤其不合适,因为终端不打印NUL)。@StefanBecker是的,当我输入*作为输入时,它没有显示所需的输出。你能解释一下为什么会发生这种情况吗?