Saya mencoba membaca nilai kunci dari file teks. Setelah membacanya, saya ingin menggabungkan nilai ini dengan beberapa string dan mengganti baris itu di file lain. Silakan temukan kode di bawah ini

source.txt file

USERNAME='cffde308-a1f8-436f-9750-619856e70b88'
PASSWORD='XEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0='

File target.js

auth: {
  username: 'zfgde308-a1f8-436f-9750-619856e70b89',
  password: 'ZEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0=',
 },

Saya ingin menyalin nama pengguna dan kata sandi dari file sumber dan menggantinya di file konfigurasi. Saya mencoba kode di bawah ini

#! /bin/sh
source "/opt/source/source.txt"
USER="username: '$USERNAME',"
PWD="password: '$PASSWORD',"

echo $USER
echo $PWD

sed '/username/c\$USER' target.js
sed '/password/c\$PWD' target.js

Dan hasil yang saya dapatkan adalah

    [l21m23 source]$ ./ClientDetailsSetup.sh
    ',ername: 'cffde308-a1f8-436f-9750-619856e70b88
    password: 'XEAstplhfKNAjUg2Z2oXjIe7o9D4VW3q2dtnkoiMEP0=',

    auth: {
      username: 'zfgde308-a1f8-436f-9750-619856e70b89',
$PWD
    },

Jika beberapa bantuan paling awal untuk menyelesaikan masalah ini akan sangat membantu

-1
JCDani 31 Mei 2020, 20:27

1 menjawab

Jawaban Terbaik
#!/bin/sh
source "/opt/source/source.txt"
USERN="username: '$USERNAME',"
PWD="password: '$PASSWORD',"

echo $USERN
echo $PWD

sed -i "s/username:.*/$USERN/" target.js
sed -i "s/password:.*/$PWD/" target.js

Ada beberapa masalah:

  • USER adalah variabel shell yang dicadangkan sehingga Anda harus memberinya nama yang berbeda
  • skrip sed Anda membutuhkan s/.../.../ untuk menggantikan dan Anda juga harus mencocokkan sisa baris di regexp Anda sehingga .* diperlukan atau kredensial lama masih ada di output
  • Opsi -i pada sed diperlukan untuk pengeditan di tempat
  • substitusi variabel tidak dilakukan dalam string yang dibatasi dengan ', jadi diubah menjadi " di sini
1
alani 31 Mei 2020, 17:43