Bash脚本中的关联数组出现问题

用户名

我试图证明如何使用关联的筹码来收集计数。它在while循环中工作,但在while循环后似乎丢失了所有信息。我究竟做错了什么?除for循环中的一个以外的所有echo语句已添加用于调试。

#!/bin/bash

declare -A shell_type

shells=$(cut -d: -f7 /etc/passwd)
echo "$shells"|
while read sh
do
  if [ -z "${shell_type[$sh]}" ]
  then
    shell_type[$sh]=1
  else
    let "shell_type[$sh] += 1"
  fi
  echo "$sh ${shell_type[$sh]}"
  echo "${!shell_type[*]}"
  echo "${shell_type[*]}"
done

echo "${shell_type[*]}"

for var in "${!shell_type[*]}"
do
  echo "$var count is ${shell_type[$var]}"
done
亚诺斯

不要通过管道传递到while循环中,如下所示:

while read sh
do
  ...
done < <(cut -d: -f7 /etc/passwd)

如果您这样做,cmd | while则while处于不同的过程中。它继承了局部变量,但无法修改它们。通过使用输入重定向,while停留在当前进程内。

顺便说一句,首先<是用于输入重定向,然后<(...)是进程替换。您之间必须有一个空格,否则外壳程序将无法分隔这些运算符。您可以man bash在“流程替代”部分中阅读有关流程替代的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Shell脚本中的关联数组

来自分类Dev

bash脚本中的find函数结果出现问题

来自分类Dev

bash脚本中的find函数结果出现问题

来自分类Dev

调用bash脚本中的函数时出现问题

来自分类Dev

bash中来自querystring的关联数组?

来自分类Dev

bash中的嵌套关联数组

来自分类Dev

在bash中动态创建关联数组

来自分类Dev

在Makefile中迭代bash关联数组

来自分类Dev

关联数组中的关联数组

来自分类Dev

小bash脚本出现问题

来自分类Dev

验证 BASH 脚本时出现问题

来自分类Dev

将BASH关联数组传递给PHP脚本

来自分类Dev

bash中的关联数组名称数组

来自分类Dev

存储Bash关联数组

来自分类Dev

BASH关联数组打印

来自分类Dev

BASH关联数组打印

来自分类Dev

计算php中关联数组中值的出现

来自分类Dev

在PHP中合并两个关联数组的问题

来自分类Dev

Java中的书籍数组出现问题

来自分类Dev

如何在bash中访问关联数组

来自分类Dev

Bash-关联数组中的值的指针?

来自分类Dev

在Bash测试中是否声明了关联数组

来自分类Dev

Bash将星形字符视为关联数组中的单词

来自分类Dev

Bash-SSH到关联数组中的主机

来自分类Dev

将Bash中的CSV读入字典/关联数组

来自分类Dev

Bash将星形字符视为关联数组中的单词

来自分类Dev

如何在bash中访问关联数组

来自分类Dev

Bash:将空间作为关联数组中的键

来自分类Dev

合并关联数组BASH中的重复键