我创建了一个函数来检查远程服务器上是否存在文件,但是当我尝试调用该函数时出现错误“ssh: command not found”。这是功能:
remote_file_exists() {
local SERVER="$1"
local PATH="$2"
local FILE="$3"
FILE_EXISTS=`ssh "$SERVER" \'find "$PATH" -name \"$FILE\"\'`
if [ -z $FILE_EXISTS ]; then
return 1
else
return 0
fi
}
我这样调用函数:
if ( remote_file_exists $REMOTE_SERVER "$REMOTE_PATH/" $REMOTE_FILE ); then
echo "$REMOTE_PATH/$REMOTE_FILE exists on $REMOTE_SERVER"
...
我得到的错误:
myscript.sh: line x: ssh: command not found
错误中“x”的值是函数中以“FILE_EXISTS=”开头的行的行号。
我怀疑这与没有正确引用有关,但我无法弄清楚。我究竟做错了什么?
编辑:感谢 Cfreak 对 PATH 变量名的了解。一旦我修复了我得到了一个不同的错误:
bash: find <MYPATH> -name "<FILE>": No such file or directory
经过一些实验,我发现删除转义的单引号可以解决第二个问题。工作线如下所示:
FILE_EXISTS=$(ssh "$SERVER" find "$MYPATH" -name \""$FILE"\")