Jawaban:
sed -i 's|'$fileWithPath'|HAHA|g' file
Kutipan tunggal menentukan string literal. Menempatkan variabel di luar literal memungkinkan shell untuk memperluas bagian itu.
Juga: jika Anda akan mengurai path, gunakan pembatas dalam perintah sed yang tidak membingungkan dengan pembatas direktori "/".
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
sepertinya berhasil.
Cara yang lebih baik untuk string literal dengan garis miring ke depan:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
Dalam keadaan di mana string pengganti atau string pola mengandung garis miring, Anda dapat menggunakan fakta bahwa GNU sed memungkinkan pembatas alternatif untuk perintah pengganti. Pilihan umum untuk pembatas adalah karakter pipa | atau hash # - pilihan terbaik untuk membatasi karakter akan sering bergantung pada jenis file yang sedang diproses. Dalam kasus Anda, Anda dapat mencoba
sed -i 's#'$fileWithPath'#HAHA#g' $file
Karakter 'g' setelah # terakhir digunakan untuk mengubah semua kejadian dalam file jika Anda hanya perlu mengubah kejadian pertama, kemudian hapus 'g'.
$fileWithPath
berisi spasi putih, pola yang salah dimasukkan.