シェルスクリプトで2つの「for文」を使用する方法は?

シェルスクリプトで2つの「for文」を使用する方法は?

ユーザーアカウントを生成するスクリプトを作成します。 useraddコマンドをエコーするスクリプトが作成されています(それで期待どおりに機能していることを確認できます)。

ファイルがあります。新入社員.txt従業員名(名前と姓、スペースで区切られた)を含みます。 読み取るには$ FULLNAME変数が必要です。新入社員.txt

これは私のスクリプトです。

#!/bin/bash

# This creates a file unames.txt containing usernames created from employees' full name

awk '!(NR%2){print substr($1,1,1)p}{p=substr($2,1,4)}' txtfiles/newemploy.txt | tr [:upper:] [:lower:] > txtfiles/unames.txt

GROUPID=500
USERID=500

for UNAME in `cat txtfiles/unames.txt`

do

echo "useradd -u$USERID -g$GROUPID -c "$FULLNAME" -d /home/$UNAME -m -s /bin/bash $UNAME"

GROUPID=`expr $GROUPID + 1`

USERID=`expr $USERID + 1`

done

答え1

次のことを試してください。

while read firstname lastname
do
    fullname="$firstname $lastname"
    uname=$(echo ${firstname:0:1}${lastname:0:4} | tr '[:upper:]' '[:lower:]')
    echo $fullname $uname
done  < newemploy.txt

関連情報