Bash:太多的争论

Lat*_*nit 4 bash arguments

我编写了以下脚本来从文本文件中添加用户.它有效,但我收到的错误是"论证太多"; 问题是什么?

#!/bin/bash

file=users.csv

while IFS="," read USRNM DOB SCH PRG PST ENROLSTAT ; do

if [ $ENROLSTAT == Complete ] ;
then
useradd $USRNM -p $DOB

else

echo "User $USRNM is not fully enrolled"
fi

done < $file

#cat users.csv | head -n 2 | tail -n 1
Run Code Online (Sandbox Code Playgroud)

Tan*_*lus 10

使用引号.宽松.

if [ "$ENROLSTAT" = Complete ]
Run Code Online (Sandbox Code Playgroud)

(这也是一个单一的等号.)我在shell编程中遇到的最大问题始终是隐藏空间.这是我在Perl中编写这么多内容的原因之一,为什么在Perl中,我告诉团队中的每个人在运行外部程序时都要避免使用shell.外壳中有如此多的力量,有很多小东西可以让你绊倒,我尽可能地避开它.(而不是在哪里不可能.)

  • @LatinUnit,这个地方有什么不对的?本网站的"预期"用途不是回答您的问题.这是为了回答你对其他人*的问题*.如果其他人在几个月后搜索您的问题时看不到您的原始问题,他们将无法得到答案的帮助.因此,我理解罗曼B.的反对意见.但是,由于我的回答对于一般的shell问题是如此通用("自由引用"),我不认为我的回答是如此令人震惊.未来的用户不需要您的代码来从响应IMO中获取价值. (3认同)
  • 男人这个地方有什么不对?这么多戏剧有点帮助删除我的问题:S (2认同)