linux - for循环linux脚本: Syntax error: Bad for loop variable

标签 linux

我刚刚开始编写脚本。 (我刚刚学完Linux LPI精要) 我面临以下挑战:

创建一个新组。每个组必须有一个唯一的名称。该脚本必须进行检查以确保系统上不存在重复的组名称。如果发现重复,则需要报告错误,并且管理员必须尝试其他组名。

这是我的“脚本”:

#!/bin/bash                                                                     

echo "Please enter a group name"                                                
read gname                                                                      

for $gname in /etc/group; do                                                    
echo "Please enter another group name"                                          
read gname                                                                      
done                                                                            

groupadd $gname                                                                 
echo "Group $gname has been created" 

这是我收到的错误。

Please enter a group name                                                       
alexandru                                                                       
test.sh: 6: test.sh: Syntax error: Bad for loop variable 

最佳答案

不要尝试解析 /etc/group,而是依靠 groupadd 来正确执行其工作。

当您使用groupadd并且该组的名称已存在时,它将以非零代码退出。

如果 [[ $? != 0]]; 然后 echo "错误,组已存在" fi

因此循环此操作直到获得正确的组:

#!/usr/bin/env bash

echo "Enter group name: "
read group

until groupadd $group
do
  read group
done

echo "${group} created"

关于linux - for循环linux脚本: Syntax error: Bad for loop variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610768/

相关文章:

C Linux 从内存中读取/写入字(段、偏移量)

linux - 打印 shell 脚本的控制台日志

linux - udev规则中的脚本未运行

c - 在嵌入式 linux 上执行简单的 C 程序时出现无法理解的错误

linux - 如何与连接到一台计算机的两个 beaglebone black 进行交互

linux - Bash 将值加载到文件中的更直接方式

c++ - Qt 不会链接任何东西

python - 没有名为 _testcapi 的模块

php - PHP 的 Yaml 扩展

linux - 安装 insights 时出错(安装 bower){ OpenEdX,Ubuntu Server 12.04 }