首页 > 解决方案 > 如何将值存储到变量中

问题描述

我正在尝试通过 lftp 获取 ftp 服务器的已用存储。

lftp :~> open username:password@IP
lftp username@IP:~> du
897146  ./volume(sda1)
897146  .

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

这是我到目前为止得到的:

#!/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'.

标签: bashlftp

解决方案


FTP 会话中的命令du将在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"

您可能需要从远程 FTP 服务器中过滤掉 FTP 会话标头和 MOTD 以及任何与du.


推荐阅读