Регулярное выражение для удаления комментариев из сценария Bash

Это обманчиво сложно. Мне нужно регулярное выражение для удаления комментариев из сценариев оболочки 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
7
задан JeffG 13 July 2011 в 16:06
поделиться