使用Variables嵌套在BASH脚本中

时间:2014-07-03 09:56:03

标签: bash variables escaping

我有一项任务是在for循环中查找文件,不会更改5分钟,可能有1个子文件夹,并将其自动ftp到远程位置。 要做到这一点,find命令对我来说很好。 但我需要剥离基本文件夹和文件名以找到可能的子文件夹并在ncftpput命令中使用它。

我从这开始:

HOST=1.2.3.4
USER=foo
PASS=bar
LDIR="/storage/external/ftp/foo/bar"

for FOUND in `find ${LDIR}/ -maxdepth 2 -type f -mmin +1 `; do
    RDIR="$FOUND | cut -d / -f 6"   
    echo "LDIR = $LDIR"
    echo "RDIR = $RDIR"
    echo "FOUND = $FOUND"
    ncftpput -u $USER -p $PASS -R -DD $HOST /$RDIR/ $FOUND
    echo " "
done  

但是RDIR =“$ FOUND | cut -d / -f 5”没有返回正确的值。空白或语法错误,或路径+ | cut -d / -f 6。 还尝试了其他刻度,反引号,$()等。

尝试:

RDIR= "$FOUND | cut -d / -f 6"
RDIR= '$FOUND | cut -d / -f 6'
RDIR= `$FOUND | cut -d / -f 6`
RDIR= $FOUND | cut -d / -f 6
RDIR= $($FOUND | cut -d / -f 6)
RDIR= "$($FOUND | cut -d / -f 6)"
RDIR= '$($FOUND | cut -d / -f 6)'
RDIR= `$($FOUND | cut -d / -f 6)`

比我放弃了。

有人能指出我正确的方向吗?

感谢。

1 个答案:

答案 0 :(得分:0)

这可能是一个开始:

RDIR=$(echo "$FOUND" | cut -d / -f 6)

可能(您应该检查),应该-f 7知道子文件夹。 而且,在find命令中不应该是-mmin +5