-3

可能重复:
Linux 脚本从 Excel 中提取信息以创建用户

需要从 excel 电子表格创建用户,在第 ​​8 行和第 13 行的脚本中出现一些错误

第 8 行 Unexpected EOF,同时寻找匹配的 `'' 第 13 行语法错误,文件意外结束

#!bin/bash
echo $(pwd)/employeesdata.xls
Path=$($pwd)/employeesdata.xls
read Path
if [ -e $Path ];
then
Username= [ grep $(Username) $Path | cut -f1 -d `]'
Password= [ grep $(Password) $Path | cut -f2 -d `]'
useradd -- b $Username
echo $Password | /usr/bin/passwd --stdin $Username
fi
exit

Excel 文件包含此信息和其他信息

Name (field1) EmployeeID (field2)    Phone             Address      
Joe Blow      22500033               156-454-3322       101 main
4

1 回答 1

1

我认为你必须重构一些东西:

#!bin/bash
echo $(pwd)/employeesdata.xls
Path="$(pwd)/employeesdata.xls"
read Path
if [ -e "$Path" ]; then
    Username=$(grep "$Username" "$Path" | cut -f1 -d ' ')
    Password=$(grep "$Password" "$Path" | cut -f2 -d ' ')
    useradd -- b $Username
    echo "$Password" | /usr/bin/passwd --stdin "$Username"
fi
exit

几点注意事项:

  1. 引用您分配给变量的值(有时这不是必需的,但对于开始它有助于避免一些问题)
  2. 引用变量的用法,除非您知道自己在做什么。在不明确引用它的情况下,该变量可以为命令/函数生成各种参数。
  3. $(cmd)执行命令cmd并用命令的输出替换它的出现。
  4. $var${var}用名为的变量的内容替换自己var
  5. "quoting $a",假设变量acontainsstring作为其内容,生成字符串quoting string
  6. 'quoting $a',独立于变量a,生成字符串quoting $a
  7. 尽管对于新手来说可能会令人困惑,但[实际上是test命令的“别名”,可用于比较字符串、整数,并进行一些基本测试,例如检查权限或文件是否存在。]实际上只是一个语法要求,只是为了通知命令它的参数已经结束(当调用 .
  8. 我假设你的分隔符是一个空格,但我可能是错的。

希望这会有所帮助=)

于 2012-09-30T22:39:22.603 回答