5、将/etc/shadow文件的每一行作为元数赋值给数组 6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量
时间: 2024-12-19 08:28:54 浏览: 4
好的,让我解释一下。
5. 要将`/etc/shadow`文件的每一行作为元组赋值给数组,在大多数Linux shell脚本语言(如bash)中,你可以这样做:
```bash
#!/bin/bash
array=()
while IFS= read -r line; do
array+=("$line")
done < /etc/shadow
echo "${array[@]}"
```
这里,`IFS= read -r line`会逐行读取文件,并使用空格作为字段分隔符(`IFS`),将每一行保存到变量`line`中。然后将这些行添加到数组`array`中。
6. 对于`/etc/passwd`文件,我们可以创建一个关联数组(在bash中称为哈希表)来统计每种类型的shell(如/bin/bash, /usr/bin/zsh等)的数量。假设我们只关心某些特定类型的shell,可以这样做:
```bash
#!/bin/bash
declare -A shells_count
while IFS=: read user shell _home _shell_path _login_directory _gecos _password; do
if [[ $shell =~ ^/(bash|zsh)$ ]]; then
shelled_type="${shell##*/}"
shells_count[$shelled_type]=$((shells_count[$shelled_type] + 1))
fi
done < /etc/passwd
for key in "${!shells_count[@]}"; do
echo "$key: ${shells_count[$key]}"
done
```
这个脚本通过`IFS=: read`来解析`passwd`文件中的每一项,并检查`shell`字段是否属于指定类型。如果是,则增加对应的计数。最后遍历并打印出每个shell类型的计数。
阅读全文