繁体   English   中英

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

[英]for loop linux scripting: Syntax error: Bad for loop variable

我刚开始编写脚本。 (我刚刚完成 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和组名已经存在时,它将以非零代码退出。

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"

您可能使用 sh 运行它,而不是 bash。尝试 bash fileName.sh 或 ./fileName.sh(如果它是可执行的),但不是 sh fileName.sh。

您可能需要遍历/etc/group的内容,请尝试以下操作,

for $gname in $(cat /etc/group); do

另外,最好检查新的组名是否也是现有的组名。

我做的!!! 感谢大伙们!!! (Kalpa Welivitigoda和Rawkode)

!/ bin / bash

回显“请输入组名”
读gname
groupadd $ gname
而[$? != 0];

回显“输入新的组名”
读gname
groupadd $ gname
完成

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM