tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Proposal to add /usr/bin/shquote



Aleksej Saushev <asau%inbox.ru@localhost> writes:

> Alan Barrett <apb%cequrux.com@localhost> writes:
>
>> On Sat, 06 Sep 2008, Aleksej Saushev wrote:
>>> > I often find the need, in shell scripts, to escape arguments to be
>>> > passed to other shell commands.  I'd like to add a /usr/bin/shquote
>>> > command as a simple wrapper around shquotev(3) to do this.
>>> Why not import real programming language for that? TCL, for instance.
>>
>> So your solution would be to have my shell script do something like
>> this:
>>
>>      listvar="$( tclsh /wherever/somescript arg1 arg2 )"
>>
>> instead of what I can already do using my own shell function or shell
>> script (invoking sed(1) and printf(1)), or what I propose to do using a
>> compiled C program (invoking shquotev(3)):
>>
>>      listvar="$( shquote arg1 arg2 )"
>>
>> Your solution would require both writing the tcl script, and importing
>> tcl to the NetBSD base system.  I don't see that as any simpler than what
>> I proposed.
>
> It is. I assure you, that it is better to learn TCL than
> fighting shell quotations, sed, test, and company.
> It is simpler and faster, and doesn't involve ad hoc C-written
> tools for subtasks, when it becomes too hard to continue with sh.
> Importing TCL is one-time task. Yes, it is big task, I know that
> pretty well, but it saves your time in future.

I'll add.

All these PERL/anti-PERL wars arise from simple fact that sh & co
is not enough. PERL is the first obvious tool that is sufficiently
powerful. The first argument against PERL is its licensing.
But the latter is solved easily: just choose any tool with
proper licence. TCL is one of them, Lua is another, you can find
other possible languages. Thus the problem is resolved: you have
powerful enough tool (scripting language), and you stay
consistent in licence policy.


-- 
HE CE3OH...



Home | Main Index | Thread Index | Old Index