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.'"' ;`