Linux脚本不起作用

时间:2015-05-18 21:59:00

标签: linux

我有以下代码:

#!/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,但它没有做任何事情,并且在运行脚本时没有错误。

2 个答案:

答案 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