【问题标题】:Extraction of usernames from the text file in a script从脚本中的文本文件中提取用户名
【发布时间】:2014-07-18 14:33:00
【问题描述】:

我是 linux 脚本的新手,我遇到了一个意外错误。我制作了一个脚本,其中考虑了两个选项 1 和 2。我遇到了选项 2 的问题我想从文本文件中提取用户名,并将除 EOF 之外的所有用户添加到主目录,如下所示:

【问题讨论】:

  • 除了语法错误,你为什么想要这样古怪的输入格式?每行只有一个用户,没有 cmets,没有明确的 EOF 将使事情变得容易得多,甚至可以减少到一行。
  • if (test whatever) 不必要地创建了一个子shell(这就是括号的作用),但可以避免您在 whatever 之后需要一个空格。那是虚假的经济;你想要if [ whatever ] 在方格内有空格,或者只是if test whatever(请记住[ 基本上是test 的同义词)。同样,在while 条件中,所有标记之间都需要空格。
  • 所有变量插值都需要双引号。如果num 为空,test $num = 2 将评估为test = 2(语法错误)。引用"$num" 可以解决这个问题。其他变量也是如此。
  • 让脚本接受一个可选的文件名参数来代替讨厌的交互式提示,并且更易于使用(因为您可以从 shell 获得制表符完成、命令历史记录等)。但是,整个脚本可以只替换为xargs -a "$file" -n 1 useradd。
  • @tripleee 谢谢你的指导 :)

标签: linux unix if-statement scripting do-while


【解决方案1】:

试试这个来解析你的输入文件:

if [ -e $Path ]
then
    while read user
    do
        [[ $user = \#* ]] && continue
        Username=`echo $user | cut -f2 -d:`
        if [ "$Username" != "EOF" ]
        then
            echo $Username
        fi
    done < $Path
fi

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多