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

@shellter 谢谢!我在回声线中添加了一个右引号,效果很好!

完成的脚本片段:

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

701谁知道701决赛的目的是什么find ... chmod

IHTH

于 2012-09-20T01:58:41.837 回答