gpt4 book ai didi

linux - 将 .txt 文件中的内容作为 bash 脚本的参数传递?

转载 作者:IT王子 更新时间:2023-10-29 00:24:21 26 4
gpt4 key购买 nike

我需要“编写一个脚本来将用户添加到您的系统中,其中用户名作为参数 n(在?,教授拼写错误)格式的文本文件中提供给脚本

Last_Name  First_Name  Middle_Initial  Group

(其余说明仅供引用)您的脚本应创建最多 8 个字符的唯一用户名,并生成用户的随 secret 码。应该为用户分配主目录取决于他们所在的组。您可以假设用户将属于管理层(“mgmt”)、员工(“empl”)或临时工(“temp”)以及他们的各自的目录在/home 中的这些组名下。例如,如果 John Doe 是在“mgmt.”中,并且他的用户名为jdoe1234,那么他的主目录应该在/home/mgmt/jdoe1234.锁定主目录,使其他人无法访问对主目录的权限高于用户本身。您的脚本应生成一个名为 users.txt 的文件,其中包含以下列:

姓氏名字 UID 密码

可用于将用户名和密码分发给用户。

第一部分(不是斜体)让我感到困惑。如果我正确理解他的措辞,他是要我从单独的 .txt 文件中获取文本并将其用作我的脚本的参数?以

./file.sh arg1 arg2 arg3 arg4

除了那些 args 将成为 .txt 文件中的前四个单词?比方说,如果 .txt 文件包含“Doe John A empl”,那么它就像打字一样

./file.sh arg1 arg2 arg3 arg4

到目前为止,这是我的尝试(我实际上已经尝试过其他的东西,但这是我现在在屏幕上看到的,有点像我开始的时候):

#!/bin/bash
echo "$(cat file.txt)"
lname=$(echo $1|head -c 3)//to make username use first 3 letters of last name
fname=$(echo $2|head -c 1)//to make username use first letter of first name
mname=$3
group=$4
echo "$lname$fname$mname$group"

截至目前,第一行以下的任何内容都没有任何作用。我从 command line arguments from a file content 得到第一行我使用它是因为我认为它可以让我使用 .txt 文件中的内容作为参数,但它显然没有这样做。它只是输出它的内容,而不是使用让我使用每个单词作为参数。不知道该怎么办。有什么帮助吗?我认为这不会很困难,因为我开始编写脚本时假设用户会提供参数,但我重新阅读了说明的第一部分并假设他希望从单独的 .txt 文件中获取它们。

最佳答案

$(command) 返回命令的输出。如果你执行 $(cat some_file) 它将返回文件的文本。您可以使用它来将文件的内容作为参数提供:

cmd1 $(cat args_file)

因此,当您使用 echo $(cat file.txt) 时,您会得到与使用 cat file.txt 相同的输出,因为 cat 将文件的内容发送到 echo,后者将其显示到标准输出。

$n 表示传递给脚本的参数 n($0 是脚本的名称)。在这里您只需提供一个参数,即文件名。所以 $2、$3$4 将不包含任何内容。

因此,从文件中您只能获得名称为 $names=$(cat $1) 的字符串。为了分别获取每个字段,可以使用cut:

lname=$(cut -d \  -f 1 $1)
fname=$(cut -d \ -f 2 $1)
mname=$(cut -d \ -f 3 $1)
group=$(cut -d \ -f 4 $1)

注意事项:

shell 中的注释符号是 # 而不是 //

head 显示文件的第一行,head -c 第一字节。它不会剪切文件。

关于linux - 将 .txt 文件中的内容作为 bash 脚本的参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28937195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com