名前を含むデータファイルがあります。グループやパスワードなしで追加する必要があるユーザー名。もちろん、すべてのスペースを削除する必要があります。 bashスクリプトを使用して追加する必要があります。誰でもスクリプトを書くのに役立ちますか?
文書:
Marianne Earman
Justina Dragaj
Mandy Mcdonnell
Conrad Lanfear
Cyril Behen
Shelley Groden
Rosalind Krenzke
Davis Brevard
Winnie Reich
Trudy Worlds
Deshawn Inafuku
Claudio Loose
Sal Pindell
Cristina Sharper
Tricia Kruss
私のスクリプト:
#!/bin/bash
#users.dat | sed "s/\t\t*/ /g"
while read p; do
#var=$(echo $p | sed "s/\t\t*/ /g")
var= echo $p | sed '/^$/d;s/[[:blank:]]//g'
#sudo useradd $var
sudo useradd $var
done < users.dat
答え1
これは単一のパイプラインで実行できます。入力から各行をxargs
実行するだけです。useradd
sed '/^[[:space:]]*$/d; s/[[:space:]]//g' users.dat |
xargs -I{} echo {}
正しいことをしていると確信しているときに変更してくださいecho
。useradd
また、Debianベースのシステム(Ubuntu、Linux Mintなど)に対してこのコードを書く場合は、代わりにadduser
使用を検討する必要がありますuseradd
。adduserは実行しますが、useraddは実行しないものは何ですか?
答え2
echo
コマンドを実行する前に、出力を変数に追加する必要があります。これにより、以前のコマンドの出力が表示されます。以下のスクリプトを試してください。うまくいくでしょう。var
$
var
#!/bin/bash
while read p; do
var=$(echo $p | sed '/^$/d;s/[[:blank:]]//g')
echo $var
#sudo useradd $var
done < users.dat