【发布时间】: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