在bash

时间:2016-08-19 03:42:18

标签: arrays bash hadoop awk

我想捕获hadoop文件的大小,然后根据它的值,我想做我的处理。我编写了一些unix脚本,但没有按预期工作。

#!/bin/sh
VAR=$(hadoop fs -ls /user/smike/del | sed 1d | awk '{ print $NF }' | paste -sd, | sed 's/,/ /g')
FVAR=$VAR
array1=($FVAR)
a=""
b=""
for i in "${array1[@]}"
do
echo "$i"
#var1=$(hadoop fs -dus /user/smike/del/$i|awk '{ print $(NF-1) }')
var1=$(hadoop fs -ls /user/smike/del/$i|awk '{ print $(NF-3) }')

echo "Size of the file is $var1"
if [ $var1 -gt 0]; then
a="$a $i"
else
b="$b $i"
fi
done
echo "$a"
echo "$b"

当我看到我的nohup文件时,替换以下行是 var1 = $(hadoop fs -ls / user / smike / del / $ i | awk'{print $(NF-3)}')

+ echo /user/smike/del/2
/user/smike/del/2
+ awk '{ print $(NF-3) }' + hadoop fs -ls /user/smike/del//user/smike/del/2
16/08/18 20:16:28 INFO hdfs.PeerCache: SocketCache disabled.
ls: `/user/smike/del//user/smike/del/2': No such file or directory

我不知道为什么会这样替代。任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:1)

替换看起来很好; i已经是一个完整的路径名,似乎没有必要在/user/smike/del前加上它。

var1=$(hadoop fs -ls "$i" |awk '{ print $(NF-3) }')