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