在bash中使用argument查找远程服务器上的文件

在bash中使用argument查找远程服务器上的文件,bash,Bash,我正在使用Ubuntu14并试图从远程服务器导入一个文件。该文件是一个SQL,其中有很多 我在本地服务器上使用这个脚本,它返回文件名 #!/bin/bash input=$1 echo $input #get the file name of the most recent file file=`find /home/user/dbBackups -type f -name ${input}"*" | sort -n | tail -1 | cut -f1,2 -d'_'` file1=$

我正在使用Ubuntu14并试图从远程服务器导入一个文件。该文件是一个SQL,其中有很多

我在本地服务器上使用这个脚本,它返回文件名

#!/bin/bash

input=$1
echo $input

#get the file name of the most recent file
file=`find /home/user/dbBackups -type f -name ${input}"*" | sort -n | tail -1 | cut -f1,2 -d'_'`

file1=$(basename $file)
echo $file1
然后我试着把它放到另一台计算机上,并试着用它远程执行

#!/bin/bash

input=$1
echo $input

file=$(ssh ceta@<servername> -p 12345 `find /home/user/dbBackups -type f -name ${input}"*" | sort -n | tail -1 | cut -f1,2 -d'_'`)
file1=$(basename $file)
echo $file1
#/bin/bash
输入=$1
echo$输入
file=$(ssh-ceta@-p 12345`find/home/user/dbBackups-type f-name${input}*“| sort-n | tail-1 | cut-f1,2-d'`)
file1=$(basename$文件)
echo$file1
当试图在远程服务器上运行脚本时,它挂起命令,我无法将其“ctrl c”移出。我认为这是find命令中的变量。如果我用一个文件名替换它,它可以正常工作

我对编码的世界相当陌生,这是我的第一篇StackExchange帖子。希望我已经给出了足够的细节


提前感谢

使用backticks,您是在本地机器上执行find命令,而不是在远程机器上执行。你想要:

remote_cmd="find /home/user/dbBackups -type f -name '$input*' | sort -n | tail -1 | cut -f1,2 -d'_'"
file=$(ssh ceta@<servername> -p 12345 sh -c "$remote_cmd")
remote_cmd=“find/home/user/dbBackups-type f-name'$input*”| sort-n | tail-1 | cut-f1,2-d |”
文件=$(ssh ceta@-p 12345 sh-c“$remote_cmd”)

但是如果您想传输文件,请使用
scp

非常感谢您的回复。我确实希望在下一部分中scp该文件。我可以使用$file作为该命令所需的部分。或者我可以在scp命令中使用$remote_cmd吗?而且,它似乎只在用户的主目录中搜索。如果不使用在“find”之后在remote_cmd变量中发出的路径,我仍然会考虑看是否可以找到它。