スペースを含むscpディレクトリ名を指定するPerlスクリプトは何ですか?

スペースを含むscpディレクトリ名を指定するPerlスクリプトは何ですか?

scp私はPerlが名前にスペースがあるディレクトリに入るようにする方法を見つけるために数時間努力してきました。現在エラーが発生しました。

scp: ambiguous target

これはうまくいかないスクリプトです。

#!/usr/bin/perl
# Assuming you already have passwordless ssh setup from some account to root on HOST
# On HOST, setup test files and directories
# root@HOST$ mkdir /tmp/from/spaced\ mydir
# root@HOST$ touch /tmp/from/spaced\ mydir/t1
# root@HOST$ mkdir /tmp/to

my $HOST='localhost';
my $escaped_component_name = 'spaced mydir';

# try to form scp from-arg that will preserve the space
# in the directory name by escaping whitespace with backslash
$escaped_component_name =~ s/(\s)/\\$1/g;
my $scp_from = '/tmp/from/'.$escaped_component_name.'/*';
my $scp_to = '/tmp/to/'.$escaped_component_name;

system 'scp', '-vr', '--', 'root@'.$HOST.':'.$scp_from, 'root@'.$HOST.':'.$scp_to;

私が間違っていることを知っている人はいますか?

ベストアンサー1

私は何が間違っていましたか?

使用system。これはシェルをフォークし、残りの引数をオプションとして使用します。つまり、sh引用符を食べなさい。

努力する:

system 'scp', '-vr', '--', '"root@'.$HOST.':'.$scp_from.'"', '"root@'.$HOST.':'.$scp_to.'"' ;`

おすすめ記事