Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays bash数组中的Save值未找到数组[]_Arrays_Bash_Awk - Fatal编程技术网

Arrays bash数组中的Save值未找到数组[]

Arrays bash数组中的Save值未找到数组[],arrays,bash,awk,Arrays,Bash,Awk,我有以下代码: #!/bin/bash PIDS=$(ls -la /proc | awk '{print $9}' | grep "^[0-9]*$") PIDLIST=$(echo $PIDS | tr "" "\n") counter=0 for PID in $PIDLIST; do KERNEL[$counter]=$(cat "/proc/$PID/stat" | awk '{print $14 }') counter=$((counter + 1)) done 我试图将c

我有以下代码:

#!/bin/bash
PIDS=$(ls -la /proc | awk '{print $9}' | grep "^[0-9]*$")
PIDLIST=$(echo $PIDS | tr "" "\n")
counter=0
for PID in $PIDLIST; do
  KERNEL[$counter]=$(cat "/proc/$PID/stat" | awk '{print $14 }')
  counter=$((counter + 1))
done
我试图将
cat”/proc/$PID/stat“|awk'{print$14}”命令的内容保存在一个命名的内核数组中,由计数器指定一个位置

我有一个错误:

mitop.sh: 8: mitop.sh: KERNEL[0]=26: not found
我做错了什么

sistemas@DyASO:~$ bash --version
GNU bash, versión 4.2.24(1)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
Licencia GPLv3+: GPL de GNU versión 3 o posterior <http://gnu.org/licenses/gpl.html>
sistemas@DyASO:~$bash--版本
GNUBash,版本4.2.24(1)-发行版(i686 pc linux GNU)
版权所有(C)2011免费软件基金会。
Licensia GPLv3+:GNU版本3 o后GPL
我正在使用
sh./mitop.sh

这就是问题所在。您没有使用Bash执行脚本。 您正在使用
/bin/sh
执行它,这是非常不同的。 您需要像这样运行它:

./mitop.sh
bash ./mitop.sh
或者像这样:

./mitop.sh
bash ./mitop.sh
最后一个只是为了检查你的精神状态。 建议使用
/The_script.sh
,运行shell脚本, 让第一行决定如何执行它

此外,脚本可以写得更好,我建议这样做:

#!/bin/bash
kernel=()
for file in /proc/[0-9]*; do
  read -a fields < "$file"/stat
  kernel+=("${fields[13]}")
done
#/bin/bash
内核=()
对于/proc/[0-9]*中的文件;做
读取-a字段<“$file”/stat
内核+=(“${fields[13]}”)
完成
我正在使用
sh./mitop.sh

这就是问题所在。您没有使用Bash执行脚本。 您正在使用
/bin/sh
执行它,这是非常不同的。 您需要像这样运行它:

./mitop.sh
bash ./mitop.sh
或者像这样:

./mitop.sh
bash ./mitop.sh
最后一个只是为了检查你的精神状态。 建议使用
/The_script.sh
,运行shell脚本, 让第一行决定如何执行它

此外,脚本可以写得更好,我建议这样做:

#!/bin/bash
kernel=()
for file in /proc/[0-9]*; do
  read -a fields < "$file"/stat
  kernel+=("${fields[13]}")
done
#/bin/bash
内核=()
对于/proc/[0-9]*中的文件;做
读取-a字段<“$file”/stat
内核+=(“${fields[13]}”)
完成

如果在
for
循环的
之前添加
declare-a内核
会怎么样?使用declare->mitop.sh:6:mitop.sh:declare:not found,我使用的是版本4.xd。您是否使用
/mitop.sh
或其他方式运行脚本,例如
sh./mitop.sh
?这很重要。我正在使用sh./mitop.shtry
bash./mitop.sh
如果在
for
循环之前添加
declare-a内核
会怎么样?使用declare->mitop.sh:6:mitop.sh:declare:not found,我正在使用版本4.xd。您是否使用
/mitop.sh
或其他方式运行脚本,例如
sh./mitop.sh
?这很重要。我正在使用sh./mitop.shtry
bash./mitop.sh