0

次のbashスクリプトを実行して、多数のユーザー、グループ、ユーザーのホームディレクトリを作成し、これらすべてのアクセス許可を修正しようとしています。OSはCentOSです。

以下を実行しようとすると、動作するはずですが、ターミナル経由で実行すると「コマンドが見つかりません」と返されます。/ homedirsディレクトリを作成するだけで、それ以上は何もできません。私はbashスクリプトの初心者なので、これが醜いように見える場合はご容赦ください。

mkdir /homedirs; chmod 775 /homedirs;

for iYear in {1..3} do
    sYear = $iYear"ti"
    sYearDir = "/homerirs/"$sYear
    groupadd $sYear; mkdir $sYearDir; chgrp $sYear $sYearDir; chmod 750 $sYearDir

    for sClass in {a,b} do
        sClassDir = $sYearDir/$sClass
        mkdir $sClassDir
        sClassGrp = $sYear$sClass
        groupadd $sClassGrp; chgrp $sClassGrp $sClassDir; chmod 750 $sClassDir

        for iUser in {1..3} do
            sUserName = "i"$iYear$sClass"g"$iUser
            sUserDir = $sClassDir/$sUserName
            useradd -d $sUserDir -g $sClassGrp -G $sYear -m $sUserName
            chown $sUserName $sUserDir; chmod 750 $sUserDir
        done
    done
done
4

3 に答える 3

1

エラー メッセージは、等号の前後のスペースが原因で発生します。コマンド名として解釈される後に空白があるトークン。したがって、変数名として意図したものはCommand not foundエラーを引き起こします。

于 2012-10-03T21:02:31.160 に答える
1

を設定する必要があるかもしれません。高度な bash スクリプト ガイドPATHを読む必要があります。この回答も参照してください。

#!/bin/bash -vxまた、スクリプトを最初の行として開始してデバッグすることをお勧めします。chmod u+xそして、少なくとも実行可能にする必要があります。

groupadd使いのシステムでは利用できない可能性があります。

于 2012-10-03T20:48:34.003 に答える
-1

最善の方法は、実行可能ファイルの前にフル パスを追加することです。

useradd を /usr/sbin/useradd に変更します

groupadd を /usr/sbin/groupadd に変更します

見つからないコマンドを修正します。

このプログラムを機能させるには、おそらく root として実行する必要があることを覚えておいてください。

于 2012-10-03T21:05:48.727 に答える