Это обманчиво сложно. Мне нужно регулярное выражение для удаления комментариев из сценариев оболочки Bash.
Имейте в виду, что $ #
, $ {# foo}
, string = "this # string "
, строка = 'эта # строка'
, $ {foo # bar}
, $ {foo ## baar}
и
string="really complex args=$# ${applejack##"jack"} $(echo "$#, again")"; `echo this is a ${#nasty[*]} example`
" все допустимые выражения оболочки, которые следует удалять , а не .
Изменить: Обратите внимание:
# This is a comment in bash
# But so is this
echo "foo bar" # This is also a comment
Изменить: Обратите внимание, что строки, которые могут быть неверно истолкованы как комментарии, могут быть спрятаны внутри HEREDOC, но поскольку это многострочный, я могу жить без обработки / учета этого:
cat<<EOF>>out.txt
This is just a heredoc
# This line looks like a comment, but it isn't
EOF