我正在看一些旧的shell脚本,有一行我不太明白:
~]$sftp -b /dev/fd/3 dropuser@targetftpserver.company.com
我可以从man文件中看到-b是批处理的,并且该参数应该是一个批处理文件.
在这种情况下,看起来批处理文件应该在/ dev / fd / 3上 – 一个软盘驱动器?我似乎无法达到它.
任何想法应该做什么?
解决方法:
“/ dev / fd *”文件是特殊设备.这些并没有真正占用您系统上的那么多空间.它们允许进程按编号访问文件描述符; 0,1,2是标准输入,标准输出和标准错误,其他打开文件以3开头
在你的情况下sftp使用-b从/ dev / fd / 3读取命令
例:
[root@04 fd]# exec 3< /etc/resolv.conf
[root@04 fd]# cat /dev/fd/3
search example.com
nameserver 10.10.10.10
nameserver 20.20.20.20
您可以使用read命令读取数据
[root@04 fd]# read -u 3 a b
[root@04 fd]# echo $a $b
nameserver 10.10.10.10
输出/ dev / fd directoy
[root@04 fd]# ls -l /dev/fd/
total 0
lrwx------ 1 root root 64 Feb 20 14:34 0 -> /dev/pts/0
lrwx------ 1 root root 64 Feb 20 14:34 1 -> /dev/pts/0
lrwx------ 1 root root 64 Feb 20 14:34 2 -> /dev/pts/0
lr-x------ 1 root root 64 Feb 20 14:34 3 -> /etc/resolv.conf
注意:在您的情况下,输入文件可能不同
标签:shell,unix,linux,sftp,solaris
来源: https://codeday.me/bug/20190517/1123085.html