Variáveis não são expandidas entre aspas simples, que é como você está passando os comandos na primeira instância. Como tal, no primeiro caso, o shell na extremidade remota nunca recebe seus valores, apenas recebe literal $1
e $2
, e eles não existem, então eles se expandem para nada.
$ var=foo
$ echo '$var'
$var
$ echo "$var"
foo
Por isso, pscp
não obtém valores quando você passa $1
e $2
(porque eles não existem no shell remoto), por isso comete erros na inicialização. É assim que pscp
acaba sendo chamado:
pscp -pw final_result.txt
Use aspas duplas quando quiser que as variáveis sejam expandidas pelo shell atual, e não por aspas simples. Usar aspas simples nesse caso seria apropriado apenas se você quisesse que as variáveis fossem expandidas pelo shell remoto .