Необходимо выйти $
в $log
в Вашем первом сценарии:
#!/bin/bash
com="GREP_COLOR=\"1;36\" egrep --color=always '[^a-zA-Z0-9]' \$log |less -R"
log="/var/log/syslog"
eval $com
Править:
Нет действительно никакой потребности использовать eval
в данном случае так предложение альтернативного и более безопасного пути как ДМИТРИЙ сделало определенно предпочтен. С другой стороны, в то время как ошибка дизайна состояла в том, чтобы использовать eval
во-первых, ошибка кодирования, которую я исправил, не состояла в том, чтобы заключить в кавычки $log
. В то время как eval
определенно имеет выровненные по ширине негативные отзывы в прессе из-за всех уязвимостей, связанных с ним, это - тем не менее, очень мощная инструкция, которую стоит знать. Тщательно записанный evals может избежать злонамеренного или неожиданного выполнения кода.
Тогда вы можете сохранить его в новом конфиговом файле:
awk -F'=" '$1 ~ /^\s* file. input\s*$/{$2="= /new/name"}{print > "new_config"}' configTenga en cuenta que si necesita esto en un script para trabajar multiplataforma (para trabajar también en MacOSX )entonces necesita usar el indicador completo -i
, proporcionando una extensión de archivo de copia de seguridad:
NEW=/new/thing
sed -i.backup 's|\s*file.input\s*=.*$|file.input = '${NEW}'|' filename
## Then you can check exit code and remove the backup file if all is well
## rm filename.backup
De lo contrario, en MacOSX obtendrá un error similar a "caracteres adicionales al final del comando".