प्रत्येक उपयोगकर्ता के लिए सभी PHP-फ़ाइलों में स्ट्रिंग को बदलने के लिए शेल स्क्रिप्ट


0

प्रत्येक उपयोगकर्ता के पास साझा डेटाबेस का उपयोग करके कुछ php-files हैं commondb। मैं सभी उपयोगकर्ताओं (Users.csv) पर, और उनके होम फोल्डर (जैसे / होम / जो) पर सभी php फ़ाइलों को पुन: प्राप्त करना चाहता हूं, और "कमोड" की प्रत्येक घटना को अपने स्वयं के डेटाबेसन, जैसे "joedb" के साथ बदलना चाहता हूं। "जो"।

मैंने निम्नलिखित कोशिश की है:

#!/bin/bash
# Execute like this:
# bash localize.bash users.csv

OLDIFS=$IFS
IFS=","
while read name dummy
  do
    echo $name
    find /home/${name} -name '*.php' -exec sed -i '' 's/commondb/${name}db/g' "{}" \;

  done < $1
IFS=$OLDIFS

users.csv के लिए

joe, Joe J
george, George G

यह विफल नहीं होता है, लेकिन फाइलें अपरिवर्तित होती हैं। मैं बैश में काफी कमजोर हूं, और मैं यह पता नहीं लगा सकता कि इसे कैसे डिबग किया जाए: /

क्या मेरी स्क्रिप्ट काम करने के लिए तय की जा सकती है?

जवाबों:


0

मैं पहली बार में आपके कोड में कुछ भी गलत नहीं देख सकता था। वास्तव में मैंने इसे चलाया और इसने ठीक काम किया, सिवाय इसके कि इसने कमांड कमांड में एकल कोट्स के इस्तेमाल के बजाय $ {name} के साथ कॉम्बोन्ड को बदल दिया। दोहरे कोट्स में बदलाव ने ठीक काम किया।

#!/bin/bash
# Execute like this:
# bash localize.bash users.csv

OLDIFS=$IFS
IFS=","
while read name dummy
  do
    echo $name
    find /home/${name} -name '*.php' -exec sed -i '' "s/commondb/${name}db/g" "{}" \;

  done < $1
IFS=$OLDIFS
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.