Ладно, не поленюсь, напишу ответ, хотя обычно на такие вопросы не отвечаю.
Это не код.
Это не скрипт.
Это не bash.
Это какая-то бредовая каша из непонятно чего. Хотя задачка довольно простая. Но проблемы у Вас начинаются прямо с постановки.
- Домашний каталог - не обязательно в /home, он указывается в записи юзера в /etc/passwd
- Права на домашний каталог - не обязательно $user:$user, как правило это $user:$usergroup
Cкрипт может выглядеть примерно так (использованные команды я обьяснять не буду - по каждой есть man, и более обьемные руководства). Да, я всегда использую Bash версии 1.х
#!/bin/sh
user=$1 # Это некорректно, здесь нужна проверка на то, передан ли аргумент, только для примера
uinfo=`getent passwd $user`
bla=`echo $uinfo | awk 'BEGIN {FS=":"} \
{printf "uname=%s;uid=%s;ugid=%s;uhome=%s",$1,$3,$4,$6}'`
eval $bla
# После этого блока у нас есть переменные uname, uid, ugid и uhome, которые
# если юзер есть, заполнены данными, а если нет - то пустые
if [ ${#uname} -ne 0 ]; then
echo "Username exist"
# Мы предположили, что uhome заполнен, но на самом деле это нужно проверять
else
echo "No username"
# Здесь команды на создание юзера
fi
if [ -d $uhome ]; then
echo "Homedir exist"
else
echo "No homedir"
mkdir $uhome
chown $uid:$ugid $uhome
fi