Saya ingin menjalankan perintah dan skrip yang terletak di mesin jarak jauh dengan skrip di mesin lokal. Saya tahu itu mungkin untuk mengeksekusi perintah semacam ini ssh
, jadi saya membuat:
#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'
Ini bekerja dengan sempurna. Saya ingin skrip ini menjadi lebih umum, menggunakan variabel. Sekarang adalah:
#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'
Dan saya mendapatkan kesalahan ini: bash: ./: is a directory
Saya kira mesin jarak jauh tidak tahu variabel-variabel ini. Jadi apakah ada cara untuk mengekspornya ke target?
shell-script
ssh
remote
variable-substitution
Jean-Baptiste Martin
sumber
sumber
Jawaban:
Saya tidak tahu cara mudah ekspor variabel lingkungan target, tetapi naskah Anda mungkin bekerja jika Anda mengganti
'
dengan"
. Dengan'
s string'cd ${LOCATION}; ./${EXEC}'
dilewatkan kata demi kata, tetapi dengansubstitusi variabel dilakukan secara lokal.
Perhatikan bahwa nilai-nilai
LOCATION
danEXEC
diteruskan ke shell jauh, jadi ini hanya berfungsi jika mereka tidak mengandung karakter khusus shell.sumber