-3

重複の可能性:
Linux スクリプトが Excel から情報を抽出してユーザーを作成する

Excelスプレッドシートからユーザーを作成する必要があり、スクリプトの8行目と13行目でいくつかのエラーが発生します

行 8 一致する `'' を探しているときに予期しない 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"、変数がその内容としてa含まstringれていると仮定すると、文字列 が生成されますquoting string
  6. 'quoting $a'は、変数aとは関係なく、文字列を生成しますquoting $a
  7. 初心者にとっては紛らわしいかもしれませんが、[実際にはコマンドの「エイリアス」であり、test文字列、整数を比較したり、アクセス許可やファイルの存在を確認するなどの基本的なテストを実行したりするために使用できます。]実際には、パラメータが終了したことをコマンドに通知するための単なる構文要件です(.
  8. 区切り文字はスペースだと思いましたが、間違っている可能性があります。

これが少し役立つことを願っています=)

于 2012-09-30T22:39:22.603 に答える