在我的.bashrc
文件中,我定义了一个函数,以便以后在命令行上使用:
function mycommand() {
ssh user@123.456.789.0 cd testdir;./test.sh "$1"
}
当使用该命令时,远程主机上只执行cd
命令;本地主机上执行test.sh
命令。这是因为分号将两个不同的命令分开: ssh
命令和test.sh
命令。
我尝试按以下方式定义该函数(请注意单引号):
function mycommand() {
ssh user@123.456.789.0 'cd testdir;./test.sh "$1"'
}
我尝试将cd
命令和test.sh
命令放在一起,但是无论我给函数什么参数,参数$1
始终未被解析,它总是试图执行一个命令。
./test.sh $1
在远程主机上执行命令,
我应该如何正确定义mycommand
,以便在进入目录testdir
后,在远程主机上执行脚本test.sh
并有能力将传递给mycommand
的参数传递给test.sh
?
cd testdir && ./test.sh "$1"
。采用这种形式(因为在bash中,“&&”的求值会短路),如果“cd”失败,则不会执行第二个命令,并且您不会意外地在“user”的主目录中运行不同的“test.sh”。 - Alp