繁体   English   中英

BASH for循环以测试用户名列表

[英]BASH for loop to test list for username

对于此特定问题,我需要编写一个脚本来检查列表是否存在,检查该列表以查看是否存在通过命令行指定的用户名,如果不存在,则将其追加到列表中。 我已经看到类似的问题,但还没有找到专门使用for循环的问题。 我刚开始学习BASH,所以任何帮助或朝正确方向的推动都将大有帮助。 这是我到目前为止(语法错误)

#! /bin/bash
user=$1

if  [ list.txt -f ]; then  
    echo "The list does not exist"

    for v in $(cat list.txt)
    do
    if [ $v -eq $user ]; then 
            echo "That username already exists!"

    elif
    echo $user >> list.txt ; then

   else  echo "That file does not exist"
fi

这是您的代码的另一种方法:

#!/bin/bash
user=$1

if  [ ! -f "list.txt" ]; then
  echo "The list does not exist."
else
  for v in $(cat list.txt)
  do
    # user found
    if [ "$v" = "$user" ]; then
      echo "That username already exists!"
      exit $?
    fi
  done
fi

# user not found
echo $user >> "list.txt"

关于Bash的注意事项:

  • 比较bash中的字符串时,您将需要使用=运算符( 请参见此列表 )。
  • 在文件名中使用引号( " " )(如果文件名带有空格等,则不是一个坏主意)
  • 如果要使用elif需要有一个条件( 请参阅此页面并搜索elif )。

希望这有所帮助; 知道Bash会非常有用!

循环适用于无所事事的人。

if [ -f list.txt ] && grep -q -x -F "$user" list.txt
then
  echo "Username exists"
else
  echo "$user" >> list.txt
fi

暂无
暂无

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

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