假設檔案 '/usr/local/etc/php-fpm.d/www.conf' 上的 'pm.max_children = 8' 下面的結果應該是 40 但 $1 只是被忽略了。
aaa=5
perl -i.bak -e "s/pm.max_children\s*=\s*\K([0-9] )/($1 * $aaa)/ge" /usr/local/etc/php-fpm.d/www.conf
但奇怪的是,如果 $aaa 不是變數,以下是有效的。
perl -i.bak -e "s/pm.max_children\s*=\s*\K([0-9] )/($1 * 3)/ge" /usr/local/etc/php-fpm.d/www.conf
uj5u.com熱心網友回復:
的含義$1在 shell 和 Perl 中是不同的。
在 shell 中,它表示第一個位置引數。由于雙引號擴展變數,$1雙引號也意味著第一個位置引數。
在 Perl 中,$1表示由正則運算式匹配的第一個捕獲組。
但是,如果你$1在 shell 級別使用雙引號,Perl 永遠不會看到它:shell$1作為第一個位置引數展開并將展開的字串發送給 Perl。
您可以使用%ENVPerl 中的哈希值來參考環境變數:
aaa=5 perl -i.bak -pe 's/pm.max_children\s*=\s*\K([0-9] )/($1 * $ENV{aaa})/ge' /usr/local/etc/php-fpm.d/www.conf
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470773.html
下一篇:使用sed計算反向參考
