Bash скрипт, нужна помощь с домашним заданием - PullRequest
2 голосов
/ 28 октября 2010

Скрипт Bash, нужна помощь с

Ответы [ 2 ]

5 голосов
/ 29 октября 2010

код из исходного поста, похоже, исчез ... свернул пример.

#!/bin/bash

function mod {
    if [ -d "/Users/$1/share" ]; then
        echo "permissions changes for $1"
        #chmod 750 /Users/$1/share
        #find /Users/$1/share -type f -exec chmod 744 {} \;
        #find /Users/$1/share -type d -exec chmod 750 {} \;
        #find /Users/$1/ -type f -exec chmod 600 {} \;
        #find /Users/$1/ -type d -exec chmod 700 {} \;
    fi   
}

function clean {
    IFS=':' read -ra pw <<< "$1"
    local c=0
    local n=""
    local t=500
    for i in "${pw[@]}"; do 
        if [ $c == 0 ]; then
            n="$i"
        fi
        if [ $c == 2 ]; then
            if [ "$i" -gt "$t" ]; then
                mod $n
            fi
        fi
        c=$[$c+1]
    done
}

function report {
    export user=$(whoami)
    ls -la "/Users/$user" > report.txt
}

if [ -z $1 ]; then"
    while read line; do 
        if [ "${line:0:1}" != "#" ]; then
            clean $line
        fi
    done < /etc/passwd
else
    for arg in "$@"
       do
         mod $arg
       done
fi
report

Единственное требование, которое не выполняется, - это печать полного пути (только относительная печать) под номером 3 в отчете. переменная t является наименьшим значением uid, на которое влияют изменения прав доступа. закомментировал chmods, чтобы никто случайно не сделал это с их системой. упс.

1 голос
/ 28 октября 2010

Вместо указания $ 1 $ 2 $ 3 зациклите вводы следующим образом:

for user ; do

Затем вам нужно будет изменить все $ 1 на $ user

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...