我有以下代码:
#!/bin/bash
# script.sh
awk -F: '{if ($3 > 500) {print $3}}' /etc/passwd
awk -F: '{if ($3 > 500) {
if (size = "$(du -s /home/$1)" > 10000) {
mkdir /home/copy/R$1
cp /home/$1 /home/copy/R$1
}
}}' /etc/passwd
第一个awk打印UID高于500的所有用户。第二个awk应该创建目录/ home / copy / Ruser,并在用户目录的大小为的时候复制用户目录中的所有文件。超过10000,但它没有做任何事情,并且在运行脚本时没有错误。
答案 0 :(得分:1)
$( du -s )
是shell语法,而不是awk语法。以下内容将主目录的大小分配给gawk中的size
:
"du -s "$6" | cut -f1" | getline size
if (size > 10000) {
...
答案 1 :(得分:0)
使用awk可能比它的价值更麻烦:
#!/bin/bash
while IFS=: read user passwd uid gid info dir shell; do
test $uid -gt 500 2> /dev/null || continue # Skip if uid too low
size="$(du -s $dir)"
if test "$size" -gt 10000; then
mkdir /home/copy/R$user
cp /home/$1 /home/copy/R$user # This probably won't work!
fi
done < /etc/passwd