如何将值存储到变量
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
.
我正在尝试通过 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
.