I'm glad it works. Why your error occurred i have no idea. The shell soes not really differentiate between data types like high-level-languages and even if a string variable contains a numeric value it should work:
Will work. It would only throw an error when "$x" contains something which can't be interpreted as integer, like "blabla".
The error message suggests that the variable was completely empty, so probably something went wrong when you assigned it a value.
A final suggestion: quote variable contents! For instance, try the following lines:
If you create the directory "/usr/myproject/content_to_add/config/abc" this will produce the message as expected. Now create the directory "/usr/myproject/content_to_add/config/ab c" (it is possible if you enclose it in double quotes) and try the above code again, replacing "abc" with "ab c". It will throw an error.
The reason is the shell has to somehow know where a word ends and another starts. Every time it encounters a space char it declares the word it is reading at that moment to be finished. If you type "mv a b" it this leads to "mv", "a" and "b" being interpreted as different words (the first being a command, the two others file names) and this is like one would expect things to work. But suppose a file is named "a b": how would you tell the shell to move that? This is called "word splitting" and it is performed on every line during the parsing process. Enclosing something in double quotes is to protect that part from this word splitting and therefore it is a good idea to write:
Which you will notice will work even with a file with spaces in its name. Try it out!
Hi all!
A bit of background: I am trying to create a script that formats SQL statements. I have gotten so far as to add new lines based on certain match criteria like commas, keywords etc. In the process, I end up adding newlines where I don't want.
For example: substr(colName, 1, 10)... (3 Replies)
Please guide if you know how to solve this.
I have a tab delimited INPUT FILE where each record is separated by -----
-----
ABC 4935402 4936680 Pattern=Cheers07080.1
ABC 4932216 4932368 Pattern=Cheers07080.1
ABC 4931932 4932122 ... (8 Replies)
Hello,
Need help with following scenario.
A file contains following text:
{beginning of file}
New: This is a new record and it is not
on same line. Since I have lost touch with script
take this challenge and bring all this in one line.
New: Hello losttouch. You seem to be struggling... (4 Replies)
I have a file.....
xxx 2345 455
abc 345 555
cdf 456 777
fff 555 888
Now my requirement is, Say if, i want to select only those records prior to the record fff 555 888...
how do i go about doing this in unix....
The fff would be hardcoded as it wud be fixed and everytime when i... (7 Replies)
I have a requirement where in i need to select records right below the search criteria
qwertykeyboard white
10 20 30
30 40 50
60 70 80
qwertykeyboard black
40 50 60
70 90 100
qwertykeyboard and white are headers separated by a tab.
when i execute my script..i would be searching... (4 Replies)
Hi All,
I have following input file. I wish to retain those lines which match multiple search criteria. The search criteria is stored in a variable seperated from each other by comma(,).
SEARCH_CRITERIA = "REJECT, DUPLICATE"
Input File:
ERROR,MYFILE_20130214_11387,9,37.75... (3 Replies)
Trying to match $1 of target.txt to $5 of file.txt. If there is a match then in an output.txt file $1,$1 (row underneath),$6,$4,$7 from file.txt are printed on the same line as $1 of target.txt. The input is from excel and the output should be tab-deliminated. Thank you :).
target.txt... (2 Replies)
Hi,
I have an input file as shown below:
20140102;13:30;FR-AUD-LIBOR-1W;2.495
20140103;13:30;FR-AUD-LIBOR-1W;2.475
20140106;13:30;FR-AUD-LIBOR-1W;2.495
20140107;13:30;FR-AUD-LIBOR-1W;2.475
20140108;13:30;FR-AUD-LIBOR-1W;2.475
20140109;13:30;FR-AUD-LIBOR-1W;2.475... (2 Replies)
Hi,
I am trying to merge two csv files based on matching criteria:
File description is as below :
Key_File :
000|ÇÞ|Key_HF|ÇÞ|Key_FName
001|ÇÞ|Key_11|ÇÞ|Sort_Key22|ÇÞ|Key_31
002|ÇÞ|Key_12|ÇÞ|Sort_Key23|ÇÞ|Key_32
003|ÇÞ|Key_13|ÇÞ|Sort_Key24|ÇÞ|Key_33
050|ÇÞ|Key_15|ÇÞ|Sort_Key25|ÇÞ|Key_34... (3 Replies)
Discussion started by: PK29
3 Replies
LEARN ABOUT OPENDARWIN
subst
subst(n) Tcl Built-In Commands subst(n)
__________________________________________________________________________________________________________________________________________________NAME
subst - Perform backslash, command, and variable substitutions
SYNOPSIS
subst ?-nobackslashes? ?-nocommands? ?-novariables? string
_________________________________________________________________DESCRIPTION
This command performs variable substitutions, command substitutions, and backslash substitutions on its string argument and returns the
fully-substituted result. The substitutions are performed in exactly the same way as for Tcl commands. As a result, the string argument
is actually substituted twice, once by the Tcl parser in the usual fashion for Tcl commands, and again by the subst command.
If any of the -nobackslashes, -nocommands, or -novariables are specified, then the corresponding substitutions are not performed. For
example, if -nocommands is specified, command substitution is not performed: open and close brackets are treated as ordinary characters
with no special interpretation.
Note that the substitution of one kind can include substitution of other kinds. For example, even when the -novariables option is speci- |
fied, command substitution is performed without restriction. This means that any variable substitution necessary to complete the command |
substitution will still take place. Likewise, any command substitution necessary to complete a variable substitution will take place, even |
when -nocommands is specified. See the EXAMPLES below. |
If an error occurs during substitution, then subst will return that error. If a break exception occurs during command or variable substi- |
tution, the result of the whole substitution will be the string (as substituted) up to the start of the substitution that raised the excep- |
tion. If a continue exception occurs during the evaluation of a command or variable substitution, an empty string will be substituted for |
that entire command or variable substitution (as long as it is well-formed Tcl.) If a return exception occurs, or any other return code is |
returned during command or variable substitution, then the returned value is substituted for that substitution. See the EXAMPLES below. |
In this way, all exceptional return codes are ``caught'' by subst. The subst command itself will either return an error, or will complete |
successfully.
EXAMPLES
When it performs its substitutions, subst does not give any special treatment to double quotes or curly braces (except within command sub-
stitutions) so the script
set a 44
subst {xyz {$a}}
returns ``xyz {44}'', not ``xyz {$a}'' and the script |
set a "p} q {r" |
subst {xyz {$a}} |
return ``xyz {p} q {r}'', not ``xyz {p} q {r}''. |
When command substitution is performed, it includes any variable substitution necessary to evaluate the script. |
set a 44 |
subst -novariables {$a [format $a]} |
returns ``$a 44'', not ``$a $a''. Similarly, when variable substitution is performed, it includes any command substitution necessary to |
retrieve the value of the variable. |
proc b {} {return c} |
array set a {c c [b] tricky} |
subst -nocommands {[b] $a([b])} |
returns ``[b] c'', not ``[b] tricky''. |
The continue and break exceptions allow command substitutions to prevent substitution of the rest of the command substitution and the rest |
of string respectively, giving script authors more options when processing text using subst. For example, the script |
subst {abc,[break],def} |
returns ``abc,'', not ``abc,,def'' and the script |
subst {abc,[continue;expr 1+2],def} |
returns ``abc,,def'', not ``abc,3,def''. |
Other exceptional return codes substitute the returned value |
subst {abc,[return foo;expr 1+2],def} |
returns ``abc,foo,def'', not ``abc,3,def'' and |
subst {abc,[return -code 10 foo;expr 1+2],def} |
also returns ``abc,foo,def'', not ``abc,3,def''.
SEE ALSO
Tcl(n), eval(n), break(n), continue(n)
KEYWORDS
backslash substitution, command substitution, variable substitution
Tcl 7.4 subst(n)