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


Groups > gnu.bash.bug > #15551

Re: Feature Request: Custom delimeter for single quotes

From Ilkka Virta <itvirta@iki.fi>
Newsgroups gnu.bash.bug
Subject Re: Feature Request: Custom delimeter for single quotes
Date 2019-11-01 10:37 +0200
Message-ID <mailman.171.1572597484.13325.bug-bash@gnu.org> (permalink)
References <CAOnw=2J6fse6U=6zofMW7pORp0yTere_DYYSKGS6hf5xK2PuQA@mail.gmail.com> <13ecc4db-2b5e-95dd-2445-78191b9c01dd@iki.fi>

Show all headers | View raw


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

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

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

csiph-web