In my .bashrc
I define a function which I can use on the command line later:
function mycommand() {
ssh user@123.456.789.0 cd testdir;./test.sh "$1"
}
When using this command, just the cd
command is executed on the remote host; the test.sh
command is executed on the local host. This is because the semicolon separates two different commands: the ssh
command and the test.sh
command.
I tried defining the function as follows (note the single quotes):
function mycommand() {
ssh user@123.456.789.0 'cd testdir;./test.sh "$1"'
}
I tried to keep the cd
command and the test.sh
command together, but the argument $1
is not resolved, independent of what I give to the function. It is always tried to execute a command
./test.sh $1
on the remote host.
How do I properly define mycommand
, so the script test.sh
is executed on the remote host after changing into the directory testdir
, with the ability to pass on the argument given to mycommand
to test.sh
?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…