Проблема с экранированием спец символов, не могу заставить данный код работать в php (shell_exec, system..) Содержимое some.txt Пробую вот так: PHP: <?php echo shell_exec("awk '$NF<=10{print \"<div style=\"width: 50%; background-color: red; color: white;\">\"$0\"</div>\";next}1'"); ?> В Bash у меня работает вот такая конструкция: PHP: cat some.txt | awk '$NF<=10{print "<div style=\"width: 50%; background-color: red; color: white;\">"$0"</div>";next}1'
http://php.net/manual/ru/function.escapeshellarg.php http://www.php.net/manual/ru/function.escapeshellcmd.php
не работает. PHP: <?php echo shell_exec(escapeshellcmd("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'")); ?> PHP: <?php echo shell_exec(escapeshellarg("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'")); ?> PHP: <?php echo system(escapeshellcmd("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'")); ?> PHP: <?php echo system(escapeshellarg("cat test | awk '$NF<=10{print "<div style="width: 50%; background-color: red; color: white;">"$0"</div>";next}1'")); ?>
Используй escapeshellarg, чтобы экранировать аргументы shell-команд, а не всю команду целиком. Если конкретно, то тебе нужно экранировать аргумент awk.