Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #15551 > unrolled thread

Re: Feature Request: Custom delimeter for single quotes

Started byIlkka Virta <itvirta@iki.fi>
First post2019-11-01 10:37 +0200
Last post2019-11-01 10:37 +0200
Articles 1 — 1 participant

Back to article view | Back to gnu.bash.bug

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Feature Request: Custom delimeter for single quotes Ilkka Virta <itvirta@iki.fi> - 2019-11-01 10:37 +0200

#15551 — Re: Feature Request: Custom delimeter for single quotes

FromIlkka Virta <itvirta@iki.fi>
Date2019-11-01 10:37 +0200
SubjectRe: Feature Request: Custom delimeter for single quotes
Message-ID<mailman.171.1572597484.13325.bug-bash@gnu.org>
On 1.11. 06:54, Patrick Blesi wrote:
> I'm looking for a hybrid between single quotes and a here doc or here
> string.
> 
> The main use case is for accepting arbitrary user-specified text. 

Do your users enter the text by directly editing the script?
Would it make more sense to use e.g. 'read' to read the input directly 
from the user?

input=""
nl='
'
echo "Enter text, end with ^D:"
while IFS= read -r line; do
     input="$input$line$nl"
done

printf "You entered:\n---\n%s---\n" "$input"


or to just have the text in a separate file (not the script) and read it 
from there?

input=$(< inputfile)


That way, the text appears in a variable, and you don't need to care 
about quotes inside it.


(You could also read from stdin with just  input=$(cat)  instead of the 
while read loop but that feels a bit odd to me for some reason.)

> I would
> like to wrap this text in single quotes so as to prevent any variable
> expansion or interpretation of the text of any kind. Additionally, I would
> like to allow the users to include single quotes in their text without
> requiring that they escape these quotes.
> 
> Something akin to the following would alleviate the need to communicate
> that users must escape single quotes, but also provide the same literal
> string behavior of single quotes.
> 
> presuming the arbitrarily substituted text is:
> 
> echo 'this command is specified by the user'
> 
> Then a syntax for this single quote heredoc behavior could be like:
> 
> $ sh -c <<^MAGIC_WORD echo 'this command is specified by the user'
> MAGIC_WORD
> 
> Everything within the MAGIC_WORD declarations would not have command
> substitution, variable expansion, etc, but would be treated as if it were
> wrapped in single quotes with the exception that single quotes between the
> MAGIC_WORDs need not be escaped.
> 
> Pardon my naïveté, does any such feature exist or are there good ways to
> accomplish this? If not, is this something that could feasibly be
> implemented? Would it be desirable?
> 
> Thanks,
> 
> Patrick
> 


-- 
Ilkka Virta / itvirta@iki.fi

[toc] | [standalone]


Back to top | Article view | gnu.bash.bug


csiph-web