Sponsored Content
Full Discussion: Safely parsing parameters
Top Forums Shell Programming and Scripting Safely parsing parameters Post 302590027 by Corona688 on Friday 13th of January 2012 01:50:26 PM
Old 01-13-2012
It's taken a bit but I've thought of a better way to parse strings like this into name-value pairs:
Code:
var1="asdf" var2=qwerty var3="string with spaces" var4

Putting it through eval could execute untoward things, but xargs understands quotes too:

Code:
$ xargs printf "%s\n" <<EOF
var1="asdf" var2=qwerty var3="string with spaces" var4
EOF
var1=asdf
var2=qwerty
var3=string with spaces
var4
$

Exactly what I want actually -- something powerful enough to understand arguments in quotes, but dumb enough to not actually evaluate everything.

So in BASH I can do this:

Code:
STRING="VAR=\"VALUE\" VAR2 VAR3='asdf'"

while IFS="=" read KEY VALUE
do
        echo "Variable $KEY is value $VALUE"
done <<<$(xargs printf "%s\n" "${STRING}")

In other shells, I'd use a temp file:

Code:
STRING="VAR=\"VALUE\" VAR2 VAR3='asdf'"
echo "$STRING" | xargs printf "%s\n"> /tmp/$$
while IFS="=" read KEY VALUE
do
        ...
done < /tmp/$$
rm -f /tmp/$$


Last edited by Corona688; 01-13-2012 at 03:06 PM.. Reason: typos
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parsing Parameters

How do you pass parameters over to another script and run the receiving script? . Here is an example of what I am talking about. for x in `cat Allx` do su myaccount -c "/temp/scripts/temp_script $x" > /dev/null 2>$1 $ done I was expecting the tem_script to be... (1 Reply)
Discussion started by: odogbolu98
1 Replies

2. Shell Programming and Scripting

Help with parsing parameters

Hi:- I need to parse a script 3 parameters (file, subject and email address). This is what I currently have: allargs=$* argcount=`echo $allargs | awk -F: '{ print NF }' ` # Total Number of arguments pdffile=`echo $allargs | awk -F: '{ print $1 }' ` # PDF/binary file to be encoded... (4 Replies)
Discussion started by: janet
4 Replies

3. UNIX for Advanced & Expert Users

Can I safely kill vdump?

Sceduled backups with vdump have been delayed as a mounted system had crashed while I was away for 2 weeks. Now there are 5 simultaneous vdumps running very slowly. The full system backup usually takes a whole weekend. Can I safely kill these? (I will have to live without a backup untill next... (4 Replies)
Discussion started by: nickt
4 Replies

4. Shell Programming and Scripting

Help parsing job script input parameters

I have a job script that runs with input parms from the command line. job.sh -p parm1_parm2_parm3_parm4_file_1.dat The parms are separated by _ The last parm is a file name and can have an _ in the name. I currently use the following commands to extract the parms parm1=`eval echo... (3 Replies)
Discussion started by: jclanc8
3 Replies

5. Shell Programming and Scripting

How to safely rm/mv files/directory

Hi all, Am writing a script that does a rm/mv if a file exist, however, in one scenario, one of the variables which is supposed to a variable for a directory is undefined/blank so instead of the variable resolving to /tmp/logfile.dmp, it resolves instead to / so the rm translates to a rm /... (2 Replies)
Discussion started by: newbie_01
2 Replies

6. Programming

Value changed when parsing parameters

I get a strange problem here, and ask for help. (gdb) 28 set_file_bit( file, bytePos, bitPos, argv ); (gdb) p argv $3 = 0xbfffef5c "00" (gdb) s set_file_bit (file=0x804b008, bytePos=2, bitPos=2, binary=0x80490e5 "11") at util/file.c:112 ... (2 Replies)
Discussion started by: 915086731
2 Replies

7. Solaris

How to remove soft link safely

Greetings, I need some help performing a system admin function that I have been tasked with. The request seems simple enough, but my feeling is that it might be more complicated than it seems. Here is what i've been tasked with: SunOS 5.10 Generic_142900-15 sun4u sparc SUNW,SPARC-Enterprise... (3 Replies)
Discussion started by: Harleyrci
3 Replies

8. Solaris

need to safely reboot to cdrom

I am using: reboot -- cdrom However I'm afraid of causing file system errors/corruption. I've seen many threads say that init 6 is safer, but I need to get to CDROM. Is there a command that is as safe as init, but can boot to cdrom, or should I not worry so much about the reboot... (5 Replies)
Discussion started by: lcoreyl
5 Replies

9. Red Hat

Can all files under /tmp be safely removed

I wanted to know whether all files under /tmp can be safely removed. I guess that /tmp may also have temporary files for applications currently being worked on, so at the most those applications may just shut down. I hope that my question is clear whether all files under /tmp can be safely... (5 Replies)
Discussion started by: RHCE
5 Replies
QAxScript(3qt)															    QAxScript(3qt)

NAME
QAxScript - Wrapper around script code SYNOPSIS
This class is part of the Qt ActiveQt Extension. #include <qaxscript.h> Inherits QObject. Public Members enum FunctionFlags { FunctionNames = 0, FunctionSignatures } QAxScript ( const QString & name, QAxScriptManager * manager ) ~QAxScript () bool load ( const QString & code, const QString & language = QString::null ) QStringList functions ( FunctionFlags flags = FunctionNames ) const QString scriptCode () const QString scriptName () const QAxScriptEngine * scriptEngine () const QVariant call ( const QString & function, const QVariant & var1 = QVariant ( ), const QVariant & var2 = QVariant ( ), const QVariant & var3 = QVariant ( ), const QVariant & var4 = QVariant ( ), const QVariant & var5 = QVariant ( ), const QVariant & var6 = QVariant ( ), const QVariant & var7 = QVariant ( ), const QVariant & var8 = QVariant ( ) ) QVariant call ( const QString & function, QValueList<QVariant> & arguments ) Signals void entered () void finished () void finished ( const QVariant & result ) void finished ( int code, const QString & source, const QString & description, const QString & help ) void stateChanged ( int state ) void error ( int code, const QString & description, int sourcePosition, const QString & sourceText ) DESCRIPTION
This class is defined in the Qt ActiveQt Extension, which can be found in the qt/extensions directory. It is not included in the main Qt API. The QAxScript class provides a wrapper around script code. Every instance of the QAxScript class represents a piece of scripting code in a particular scripting language. The code is loaded into the script engine using load(). Functions declared in the code can be called using call(). The script provides scriptEngine() provides feedback to the application through signals. The most important signal is the error() signal. Direct access to the QAxScriptEngine is provided through the scriptEngine() function. Warning: This class is not available with the bcc5.5 and MingW compilers. Member Type Documentation QAxScript::FunctionFlags This FunctionFlags enum describes formatting for function introspection. QAxScript::FunctionNames - Only function names are returned. QAxScript::FunctionSignatures - Returns the functions with signatures. MEMBER FUNCTION DOCUMENTATION
QAxScript::QAxScript ( const QString & name, QAxScriptManager * manager ) Constructs a QAxScript object called name and registers it with the QAxScriptManager manager. This is usually done by the QAxScriptManager class when loading a script. A script should always have a name. A manager is necessary to allow the script code to reference objects in the application. The manager takes ownership of the object. QAxScript::~QAxScript () Destroys the object, releasing all allocated resources. QVariant QAxScript::call ( const QString & function, const QVariant & var1 = QVariant ( ), const QVariant & var2 = QVariant ( ), const QVariant & var3 = QVariant ( ), const QVariant & var4 = QVariant ( ), const QVariant & var5 = QVariant ( ), const QVariant & var6 = QVariant ( ), const QVariant & var7 = QVariant ( ), const QVariant & var8 = QVariant ( ) ) Calls function, passing the parameters var1, var1, var2, var3, var4, var5, var6, var7 and var8 as arguments and returns the value returned by the function, or an invalid QVariant if the function does not return a value or when the function call failed. See QAxScriptManager::call() for more information about how to call script functions. QVariant QAxScript::call ( const QString & function, QValueList<QVariant> & arguments ) This is an overloaded member function, provided for convenience. It behaves essentially like the above function. Calls function passing arguments as parameters, and returns the result. Returns when the script's execution has finished. See QAxScriptManager::call() for more information about how to call script functions. void QAxScript::entered () [signal] This signal is emitted when a script engine has started executing code. void QAxScript::error ( int code, const QString & description, int sourcePosition, const QString & sourceText ) [signal] This signal is emitted when an execution error occured while running a script. code, description, sourcePosition and sourceText contain information about the execution error. void QAxScript::finished () [signal] This signal is emitted when a script engine has finished executing code. void QAxScript::finished ( const QVariant & result ) [signal] This is an overloaded member function, provided for convenience. It behaves essentially like the above function. result contains the script's result. This will be an invalid QVariant if the script has no return value. void QAxScript::finished ( int code, const QString & source, const QString & description, const QString & help ) [signal] This is an overloaded member function, provided for convenience. It behaves essentially like the above function. code, source, description and help contain exception information when the script terminated. QStringList QAxScript::functions ( FunctionFlags flags = FunctionNames ) const Returns a list of all the functions in this script if the respective script engine supports introspection; otherwise returns an empty list. The functions are either provided with full prototypes or only as names, depending on the value of flags. See also QAxScriptEngine::hasIntrospection(). bool QAxScript::load ( const QString & code, const QString & language = QString::null ) Loads the script source code written in language language into the script engine. Returns TRUE if code was successfully entered into the script engine; otherwise returns FALSE. If language is empty (the default) it will be determined heuristically. If code contains the string End Sub it will be interpreted as VBScript, otherwise as JScript. Additional scripting languages can be registered using QAxScript::registerEngine(). This function can only be called once for each QAxScript object, which is done automatically when using QAxScriptManager::load(). QString QAxScript::scriptCode () const Returns the script's code, or the null-string if no code has been loaded yet. See also load(). QAxScriptEngine * QAxScript::scriptEngine () const Returns a pointer to the script engine. You can use the object returned to connect signals to the script functions, or to access the script engine directly. QString QAxScript::scriptName () const Returns the name of the script. void QAxScript::stateChanged ( int state ) [signal] This signal is emitted when a script engine changes state. state can be any value in the QAxScriptEngineState enumeration. SEE ALSO
http://doc.trolltech.com/qaxscript.html http://www.trolltech.com/faq/tech.html COPYRIGHT
Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the license file included in the distribution for a complete license statement. AUTHOR
Generated automatically from the source code. BUGS
If you find a bug in Qt, please report it as described in http://doc.trolltech.com/bughowto.html. Good bug reports help us to help you. Thank you. The definitive Qt documentation is provided in HTML format; it is located at $QTDIR/doc/html and can be read using Qt Assistant or with a web browser. This man page is provided as a convenience for those users who prefer man pages, although this format is not officially supported by Trolltech. If you find errors in this manual page, please report them to qt-bugs@trolltech.com. Please include the name of the manual page (qaxscript.3qt) and the Qt version (3.3.8). Trolltech AS 2 February 2007 QAxScript(3qt)
All times are GMT -4. The time now is 01:13 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy