SCP: コマンドラインで動作しますが、cp:スクリプトのエラーを計算できません。なぜ?

SCP: コマンドラインで動作しますが、cp:スクリプトのエラーを計算できません。なぜ?

scpを使用してサーバーからマイコンピュータにファイルをコピーしています。コマンドラインからコマンドを入力すると、コマンドは正常に機能しますが、それを実行するためにスクリプトを作成しようとすると、エラー「cp:can count」で失敗します。スクリプトが自分のコンピュータにディレクトリがあるかどうかを確認しようとしているようですが、私はそうは思いません。

user@serverと同じ$ LOGIN変数があります。

コマンドラインから実行するコマンドは次のとおりです。

scp $LOGIN:dir/dir/file.txt .

これが私のbashスクリプトにあるものです:

scp "$LOGIN:$1 $2"

これが私がスクリプトを呼び出す方法です。

./scriptname dir/dir/file.txt .

そしてエラー:

cp: ':dir/dir/file.txt' を stat できません: そのファイルまたはディレクトリがありません

このスクリプトを操作する方法についてのアイデアはありますか?

答え1

環境変数としてエクスポートされないため、LOGINスクリプトを入力すると失われるため、スクリプトは実行しようとします。

scp :dir/dir/file.txt .

欲しいものの代わりに:

scp user@server::dir/dir/file.txt .

最も短い「修正」は次のとおりです。

export LOGIN

スクリプトを実行する前に。

また、引用する方が良いです。

scp "$LOGIN":"$1" "$2"

これにより、scp1つではなく2つの別々の文字列を表示できます。

関連情報