[英]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)
回显“请输入组名”
读gname
groupadd $ gname
而[$? != 0];
做
回显“输入新的组名”
读gname
groupadd $ gname
完成
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.