1

次のスクリプトを継承して、OSX でアカウントを作成しました。

最初にその名前のアカウントが宛先に既に存在するかどうかを確認し、存在する場合は「アカウントが存在します」というメッセージをエコーし​​ 、他のアクションを実行せずに移動するチェックを含めたいと思います。

典型的な /tmp/list.txt は短い名前だけで構成されています。

jdoe
brianx
peterm
smithd

あなたの助けは大歓迎です!

#! /bin/sh

if [ $# -ne 1 ]
then
        echo mkhdir: Did not find required argument: group name
        echo Usage: mkhdir \[group\]
        exit 1
fi

for i in  `cat /tmp/list.txt` ; do
if [ ! -r /Volumes/UserStorage/Users/$i ]
   then
      mkdir /Volumes/UserStorage/Users/$i
      mkdir /Volumes/UserStorage/Users/$i/Backups
fi
chown -R $i:$1 /Volumes/UserStorage/Users/$i
chmod -R 700 /Volumes/UserStorage/Users/$i
find /Volumes/UserStorage/Users/$i -type d -exec chmod 701 {} \;
done
4

2 に答える 2

1

@シェルターありがとう!エコー行に終了引用符を追加したところ、完全に機能しました!

完成したスクリプト スニペット:

for i in  `cat /tmp/list.txt` ; do
    if [ ! -d /Volumes/UserStorage/Users/$i ] ; then
         mkdir /Volumes/UserStorage/Users/$i
    else 
       echo "/Volumes/UserStorage/Users/$i already exists" >&2
    fi
    if [ ! -d /Volumes/UserStorage/Users/$i/Backups ] ; then
        mkdir /Volumes/UserStorage/Users/$i/Backups
    else
        echo "/Volumes/UserStorage/Users/$i/Backups already exists" >&2
    fi
    chown -R $i:$1 /Volumes/UserStorage/Users/$i
    chmod -R 700 /Volumes/UserStorage/Users/$i
    find /Volumes/UserStorage/Users/$i -type d -exec chmod 701 {} \;
done
于 2012-09-20T03:06:10.770 に答える
0

のテストで[ ! -r ... ]は、/ Volumes / UserStorage / Users /$iがディレクトリであるかどうかはわかりません。使用する

for i in  `cat /tmp/list.txt` ; do
    if [ ! -d /Volumes/UserStorage/Users/$i ] ; then
         mkdir /Volumes/UserStorage/Users/$i
    else 
       echo "/Volumes/UserStorage/Users/$i already exists" >&2
    fi
    if [ ! -d /Volumes/UserStorage/Users/$i/Backups ] ; then
        mkdir /Volumes/UserStorage/Users/$i/Backups
    else
        echo "/Volumes/UserStorage/Users/$i/Backups already exists" >&2
    fi
    chown -R $i:$1 /Volumes/UserStorage/Users/$i
    chmod -R 700 /Volumes/UserStorage/Users/$i
    find /Volumes/UserStorage/Users/$i -type d -exec chmod 701 {} \;
done

701701ファイナルでの目的を知っている人はいfind ... chmodますか?

IHTH

于 2012-09-20T01:58:41.837 に答える