bash - 如何将值存储到变量中
问题描述
我正在尝试通过 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'.
解决方案
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
.
推荐阅读
- python-3.x - 从 CSV 文件下载图像
- c++ - 关于对象引用的混淆
- javascript - 对象中最后一行后的尾随逗号
- angular - 两种不同类型的数据
- algorithm - 如何解决 BST 问题?
- azure - 是否可以从 Microsoft.Azure.EventHubs 库迁移到 Azure.Messaging.EventHubs 而不会丢失检查点?
- java - 如何将 HashMap 数据保存在我电脑的任何位置?
- ms-access - 在 MS Access 的 Format 函数中使用变量时,数字的格式不正确
- javascript - 当测试和测试对象在不同文件中时,从其他文件模拟导入的函数
- azure-language-understanding - 如何使用 LUIS 短语列表来增强模式识别?