如何将值存储到变量

how to store the values to a variable

我正在尝试通过 lftp.

获取 ftp 服务器的已用存储空间
lftp :~> open username:password@IP
lftp username@IP:~> du
897146  ./volume(sda1)
897146  .

我想从 sh 脚本中获取 897146 的值。

这是我目前得到的:

#!/bin/bash

FTP_PASS=password
FTP_HOST=IP
FTP_USER=username
LFTP=lftp


lftp  << EOF
open ${FTP_USER}:${FTP_PASS}@${FTP_HOST}
FOO="$(du)"
quit
EOF
echo "$FOO"

但是我得到了

Unknown command `FOO=9544       ./logs'.
Unknown command `9636'.

FTP里面的du命令session会在lftp命令输出里面输出。因此,要获得 du 命令的输出,您需要在变量中捕获 lftp 命令的输出:

#!/usr/bin/env bash
FTP_PASS=password
FTP_HOST=IP
FTP_USER=username


FOO=$(lftp  << EOF | filter_out_things_unrelated_to_du
open ${FTP_USER}:${FTP_PASS}@${FTP_HOST}
du
quit
EOF
)
echo "$FOO"

您可能需要 filter-out FTP session header 和来自远程 FTP 服务器的 MOTD 以及任何与输出无关的内容du.