リモート サーバー上のファイルの存在を確認する関数を作成しましたが、関数を呼び出そうとすると「ssh: コマンドが見つかりません」というエラーが表示されます。関数は次のとおりです。
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=」で始まる関数内の行番号です。
これは正しく引用していないことと関係があると思われますが、わかりません。私は何を間違っていますか?
編集: PATH 変数名をうまくキャッチしてくれた Cfreak に感謝します。別のエラーが発生したことを修正したら:
bash: find <MYPATH> -name "<FILE>": No such file or directory
いくつかの実験の後、エスケープされた単一引用符を削除すると、2番目の問題が修正されることがわかりました。作業行は次のようになります。
FILE_EXISTS=$(ssh "$SERVER" find "$MYPATH" -name \""$FILE"\")