从文本文件编写用户名创建脚本?

Scripting username creation from text file?

我在 Bash 和一般的脚本方面真的很新。 我必须创建由名字的第一个字母和姓氏组成的用户名。为此,我使用提供的文本文件,如下所示:

doe,john
smith,mike
...

我声明了以下变量:

fname=$(cut -d, -f2 "file.txt" | cut -c1)
lname=$(cut -d, -f1 "file.txt")

但是如何将这些元素放在一起形成名称 jdoemsmith ?我尝试了我知道的连接字符串和变量的方法,但没有任何效果..

我想我找到了一个使用 awk 的方法应该有效,但是还有其他方法可以 "concatenate" 2 个列表的元素吗? 谢谢

有一百万种方法,这是最简单的:

$ awk -F, '{print substr(,1,1) }' file
jdoe
msmith

这看起来有点像家庭作业,所以我会给出一些提示。

要将文件的每一行的姓氏和名字读入单独的变量,请参阅 BashFAQ 1。它不应该涉及 cut.

要获取变量的第一个字符,请参阅 BashFAQ 100

是最简单的(可能也是最快的),但由于您要求不同的解决方案:

#!/usr/bin/env bash

while IFS=, read -r last first _; do
  username=${first:0:1}${last}
  echo "username: $username"
done < file.txt
  • IFS=, read -r last first _ 从每个输入行读取前 2 个 , 分隔的字段(_ 是一个虚拟变量,它接收输入行的其余部分,如果有的话;-r 阻止解释输入中的 \ 个字符,这通常是您想要的)。
  • username=${first:0:1}${last} 连接第一个字符。变量 $first 的值与变量 $last 的值的组合,只需将两个变量引用并排放置即可。
  • < file.txt 是一种输入重定向,它通过标准输入将 file.txt 的内容发送到 while 循环。