The DO file processor supports a mechanism for concatenating parameters on the command line before they are bound to the $0 thru $9 formal parameters. The syntax consists of prepending $+ to the start of a parameter that you want to combine with the prior parameter. For example, consider a generic dothis.do file consisting of the following command:
HOST $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
If you executed it with:
.DOTHIS play ina $+gada $+davida real loud
The resulting host command would be:
play inagadadavida real loud
Note that "real" and "loud", which started out in positions $4 and $5, got shifted by the concatenation down to $2 and $3.
You can also use the $+ operator in the middle of an argument to avoid the argument renumbering problem just described, i.e.:
.DOTHIS play ina$+gada$+davida real loud
In this case, it is more clear that there are only 4 arguments ($0 thru $3) being passed to DOTHIS. This technique is mainly of interest in conjunction with $KBDn variables and the UCS/LCS functions where you may want to concatenate some folded keyboard input with a hardcoded value, and doing do so directly would interfere with the interpretation of the $KBDn and LCS() / UCS() syntax. For example:
:R
:<Enter command: >
:K0
:<Enter ini file: >
:K1
DOTHIS /vm/miame/bin/ $+LCS($KBD0) -i /vm/miame/ $+LCS($KBD1)
Assuming the user input "ASHELL" to the first prompt and "MIAME.INI" to the second, then the dothis.do file would execute:
HOST /vm/miame/bin/ashell -i /vm/miame/miame.ini
Without the concatenation, the user would have had to enter the entire paths or do without the LCS() function.
History
January 2005, A-Shell 4.9.910: Function added to A-Shell.