我继承了以下脚本来在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
答案 0 :(得分: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
答案 1 :(得分: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
中{{1}}的目的是什么?
IHTH