Rumah  >  Soal Jawab  >  teks badan

linux - Tulis skrip untuk mengubah suai maklumat konfigurasi dalam fail, ralat pelaksanaan

Terdapat terutamanya tiga fail test.cnf test.sh test.txt
Laksanakan test.sh untuk membaca konfigurasi test.cnf untuk mengubah suai kandungan test.txt Semasa pelaksanaan, konfigurasi telah berjaya dibaca tetapi tidak ditemui apabila sed dilaksanakan.
sed di sini hanyalah untuk menyahpepijat tanpa mengubah suai test.txt, ia hanya memaparkan hasil test.txt

[root@localhost /tmp]# head -100 test*
==> test.cnf <==
yy=123
ppp=456

==> test.sh <==
function myconf(){

source test.cnf
awk -F'=' '{print }' test.cnf|while read myline;do sed s/{{$myline}}/${$myline}/g test.txt;done
}
myconf

==> test.txt <==
uuu={{yy}}
ooo={{ppp}}

Ralat pelaksanaan dipaparkan semasa nyahpepijat;

[root@localhost /tmp]# bash -x test.sh
+ myconf
+ source test.cnf
++ yy=123
++ ppp=456
+ read myline
+ awk -F= '{print }' test.cnf
test.sh: line 4: s/{{$myline}}/${$myline}/g: bad substitution
欧阳克欧阳克2663 hari yang lalu774

membalas semua(1)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-07-04 13:47:27

     while read a b;do sed -n "s/$a/$b/p" test.txt;done < <(awk -F= '{print ,}' test.cnf)

    Kaedah lain:

    awk -F= -vOFS='=' 'NR==FNR{a[]=;next}{for(i in a)if( ~ i)sub(i,a[i],)}1' test.cnf test.txt

    balas
    0
  • Batalbalas