技术解析

请教在 shell 里把完整文件路径传入后,如何只取文件名?
0
2021-06-23 16:43:16
idczone

原来我是这么干的。。。

[[email protected] /tmp/script]$ cat put2ftp.sh 
#!/bin/bash
FTILE_NAME=$1
ftp -n <<- EOF
open 192.168.89.36
user tartar tar123456
hash
bin
delete $FTILE_NAME
put $FTILE_NAME
bye
EOF

于是

sh put2ftp hellocat.tar.gz 

嗖一下就传过去了

如果我指定了完整路径

sh put2ftp /tmp/some/hellocat.tar.gz

在 delete $FTILE_NAME 这句,ftp 是不需要完整路径的,只需文件名, 求问,我应该如何单独提取出文件名呢?


man basename

ftp 交互中,很多 linux 命令都是无效的,推荐使用 ssh 或者 expect 来做这类文件传输。
你这里可以在 shell 脚本的 ftp 命令前,增加一个楼上所说的 basename 命令来获取传入的文件名。

搜索一下“ shell split ”,然后使用“/”作为 split 字符。。。这个是我第一时间想到的
还是 1 楼精通 shell

https://www.google.com/search?q=shell%E5%8F%96%E6%96%87%E4%BB%B6%E5%90%8D

basename +1
弄路径的时候加个双引号
命令行 FTP 客户端我比较喜欢用 ncftp

楼上都答完了。
楼主 FILE 拼错了 看着蓝瘦。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服