gpt4 book ai didi

arrays - 在 bash 中使用数组时变量未正确替换

转载 作者:可可西里 更新时间:2023-11-01 16:43:03 25 4
gpt4 key购买 nike

我想捕获 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

不知道为什么要这样替换。任何帮助表示赞赏。谢谢

最佳答案

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

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

关于arrays - 在 bash 中使用数组时变量未正确替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com