for循环linux脚本:语法错误:循环变量错误

nwnhqdif  于 2022-12-11  发布在  Linux
关注(0)|答案(4)|浏览(197)

我刚刚开始编写脚本。(我刚刚完成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
i34xakig

i34xakig1#

不要试图解析/etc/group,而是依赖groupadd来正确执行它的工作。
当您使用groupadd并且组名称已经存在时,它将退出并返回一个非零代码。
if [[ $? != 0 ]]; then echo "Error, group already exists" fi
因此,要循环执行此操作,直到得到正确的组:

#!/usr/bin/env bash

echo "Enter group name: "
read group

until groupadd $group
do
  read group
done

echo "${group} created"
pbgvytdp

pbgvytdp2#

您可能使用sh而不是bash来运行它。fileName.sh如果它是可执行文件,请尝试bash www.example.com或./fileName.sh,但不要使用sh fileName.sh。

yrdbyhpb

yrdbyhpb3#

您可能需要迭代/etc/group的内容,请尝试以下操作,
for $gname in $(cat /etc/group); do
另一方面,最好检查新组名是否也是现有组名。

c0vxltue

c0vxltue4#

我做到了!!!谢谢你们,伙计们!!!(卡尔帕·韦利维蒂戈达和劳克德)

!/bin/猛击

echo“请输入组名”
读取gname
组添加$gname
当[ $?!= 0 ]时;

echo“输入新组名”
读取gname
组添加$gname
已完成

相关问题