0
我寫了我認爲是一個快速腳本,我可以在一堆機器上運行。相反,它打印的內容看起來可能是一個遞歸搜索目錄內容:bash:sed:意外的行爲:顯示所有內容
version=$(mysql Varnish -B --skip-column-names -e "SELECT value FROM sys_param WHERE param='PatchLevel'" | sed -n 's/^.*\([0-9]\.[0-9]*\).*$/\1/p')
if [[ $(echo "if($version == 6.10) { print 1; } else { print 0; }" | bc) -eq 1 ]]; then
status=$(dpkg-query -l | awk '{print $2}' | grep 'sg-status-polling');
cons=$(dpkg-query -l | awk '{print $2}' | grep 'sg-consolidated-poller');
if [[ "$status" != "" && "$cons" != "" ]]; then
echo "about to change /var/www/Varnish/lib/Extra/SG/ObjectPoller2.pm"; echo;
cp /var/www/Varnish/lib/Extra/SG/ObjectPoller2.pm /var/www/Varnish/lib/Extra/SG/ObjectPoller2.pm.bkup;
sed -ir '184s!\x91\x93!\x91\x27--timeout=35\x27\x93!' /var/www/Varnish/lib/Extra/SG/ObjectPoller2.pm;
sed -n 183,185p /var/www/Varnish/lib/Extra/SG/ObjectPoller2.pm; echo;
else
echo "packages not found. Assumed to be not applicable";
fi
else
echo "This is 4.$version, skipping";
fi
的腳本應該確保光油是4.6.10版本,並有2個自定義.deb軟件包安裝(不通過apt-get的) 。然後做一個備份和編輯一個perl模塊中的單行從[]
到['--timeout=35']
它看起來像它在sed取代一個班輪絆倒。
你的腳本有大量的外部依賴。請嘗試將其降至[最小完整可驗證示例](http://stackoverflow.com/help/mcve)。謝謝。 – tripleee
此外,第一個「if」條件無可救藥地過於複雜,並且monkey-patching系統的Perl代碼看起來極其糟糕。 – tripleee
if'打算說'如果[$ version == 6.10];然後 ...;其他...; fi'?我還建議使用'grep -q'來測試你的包的存在(如果沒有更正確的方法)。 –