A sequence expression takes the form {x..y}, where x and y are either integers or single characters. When integers are supplied, the expression expands to each number between x and y, inclusive. When characters are supplied, the expression expands to each character lexicographically between x and y, inclusive. Note that both x and y must be of the same type.
Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual.
There is no 26 there when the brace expansion is attempted. The 1 and the literal string "$CAP" are an invalid sequence expression at that stage.
---------- Post updated at 07:20 PM ---------- Previous update was at 07:15 PM ----------
Brace expansion is an extension to the POSIX sh standard. Different posix-like shells perform it at different times. bash performs it before all other expansions while ksh leaves it for much later (after parameter expansion and command substitution and field splitting).
---------- Post updated at 07:46 PM ---------- Previous update was at 07:20 PM ----------
I forgot to mention, if you want to loop over the elements of an array, there's a much simpler way to do it:
The * and @ subscripts are analogous to the $* and $@ special parameters used by the shell to handle script arguments.
We have a script that runs in ksh on HP-UX 11.11. It takes three arguments. The last argument can be a filename or wildcard character. For example:
script -s hello -t goodbye '*.d*'
In a case such as this, I would wrap single quotes around the final argument because I dont want the shell to... (4 Replies)
#!/usr/bin/bash
if
then
echo "Not valid arguments entered. Just username should be entered."
else
USER_NAME=$1
FILE_NAME=$USER_NAME.info
UNN=STUDIN\\\\$1
echo $UNN
last STUDIN\\\\$1
last UNN
If I type `last STUDIN\\eip060` it works but if I try to expand it with variable it is... (5 Replies)
I have a script that takes an option for server pools to run the script against. The option is given as a comma separated list (ie, -p 201,204,301).
I'm using eval and brace expansion to get those pool numbers into an array. It works fine unless only 1 pool number is given. Here's the code:
... (5 Replies)
I'm in the habit of using the following type of loop structure:
for num in `seq $1 $2`
do
command
doneWhile `seq $1 $2` is not exactly a huge resource hog, I would like to learn a better way. It seems that brace expansion is a good way to go:
for num in {3..10}The problem, though, is... (2 Replies)
There is a file as:
....... some text
timing () {
capacitance : 9.0;
incap : 0.8;
cell_fall () {
values ("8.9","7.8");
}
}
........ some more text
#######
Is there a way to directly find closing brace "{" of timing () block "{" ? (2 Replies)
i write a batch file , here is the content.
dirname='date +%Y-%m-%d'
mkdir dirname
but it doen's work, it just create a folder named date and +%Y-%m-%d.
i have tried run the command seperately in the bash prompt. after the first
sentence executed , i use $dirname to watch the value of... (4 Replies)
The objective of the code below is to create sed script to be later executed. However, it bonks because $ARCHIVENAME expands to a directory specification so the forward slashes cause problems. I can think of a few solutions that would involve redesigning the process, but I'm hoping there might be... (4 Replies)
Hi forum,
in my bash script I've many lines executing commands with redirection to log files.
...
xyz_cmd 2>&1 > $BASENAME.$LINENO
The trailing part of these lines doesn't look nice and I like to put it into a variable.
The (not working) idea is something like that
... (3 Replies)
Hello,
I use a lot this command to edit a bunch of files at once
find . -name filename" | xargs -ifoo sh -c 'echo foo ; sed "s/pattern1/pattern2/" foo > ./tmp ; mv -f ./tmp foo'
I'm trying to put a function on my .bashrc file.
function loopSed()
{
local filename=$1
local... (2 Replies)
Hello.
The file /etc/fstab contains
UUID=957c3295-9944-1593-82e2-2b90dede4312 / ext4 noatime,discard,acl,user_xattr 1 1
I fill a variable
SOME_LINE=$( cat /etc/fstab | grep \/\..*ext4 | grep noatime,discard )echo $SOME_LINE... (3 Replies)
Discussion started by: jcdole
3 Replies
LEARN ABOUT HPUX
wordfree
wordexp(3C)wordexp(3C)NAME
wordexp(), wordfree() - perform word expansions
SYNOPSIS DESCRIPTION
performs word expansions and places the list of expanded words into the structure pointed to by pwordexp.
The words argument is a pointer to a string containing one or more words to be expanded. The expansions are the same as would be performed
by the shell (see sh-posix(1)), if words were the part of a command line representing the arguments to a utility. Therefore, words must
not contain an unquoted newline character or any of the unquoted shell special characters or except in the context of shell command substi-
tution. If words contains an unquoted comment character, it is treated as the beginning of a token that interprets as a comment indicator,
causing the remainder of words to be ignored.
The structure type is defined in the header and includes the following members:
A used to keep count of words matched by words.
A used as a pointer to a list of expanded words.
Also a used to indicate the number of slots to reserve at the beginning of
stores the number of generated words into Each individual field created during field splitting or path name expansion is a separated word
in the list. The words are in order as described in shell word expansions. The first pointer after the last word pointer is a null
pointer. The expansion of special parameters (such as $$ or $*) is unspecified.
It is the caller's responsibility to allocate the storage pointed to by pwordexp. allocates other space as needed, including memory
pointed to by
frees any memory associated with pwordexp from a previous call to
The flags argument is used to control the behavior of The value of flags is the bitwise inclusive OR of zero or more of the following con-
stants, which are defined in
Append words generated to the ones from a previous call to
Make use of If this flag is set, is used to specify how many null pointers to add to the beginning of In other words, points
to null pointers, followed by word pointers, followed by a null pointer.
Fail if command substitution is requested.
The pwordexp argument was passed to a previous successful call to and has not been passed to The result is the same
as if the application had called and then called without
Do not redirect stderr to
Report error on an attempt to expand an undefined shell variable.
The flag can be used to append a new set of words to those generated by a previous call to The following rules apply when two or more calls
to are made with the same value of pwordexp and without intervening calls to
o The first call must not set All subsequent calls must set it.
o All of the calls must set or all must not set it.
o After the second and each subsequent call, points to a list containing the following:
o Zero or more null pointers, as specified by and
o Pointers to the words that were in the list before the call, in the same order as before.
o Pointers to the new words generated by the latest call, in the specified order.
o The count returned in is the total number of words from all of the calls.
o The application can change any of the fields after a call to but if it does, it must reset them to the original value before a
subsequent call, using the same pwordexp value, to or with the or flag.
If words contains an unquoted newline, parentheses, or curly brackets in an inappropriate context, fails, and the number of expanded words
is zero.
Unless is set in flags, redirects stderr to for any utilities executed as a result of command substitution while expanding words. If is
set, writes messages to stderr if syntax errors are detected while expanding words.
If is set, has the same value for each call and the call using a given
RETURN VALUE
Upon successful completion, returns zero; otherwise, it returns a nonzero value defined in to indicate the error:
One of the unquoted characters
parentheses, or braces appears in words in an inappropriate context.
Reference to undefined shell variable when
is set in flags.
Command substitution requested when
was set in flags.
Attempt to allocate memory failed.
Shell syntax error such as unbalanced parentheses
or unterminated string.
Internal error.
If returns the error value and are updated to reflect any words that were successfully expanded. In other cases, they are not modified.
AUTHOR
and were developed by OSF and HP.
SEE ALSO sh-posix(1), fnmatch(3C), glob(3C), regexp(5), thread_safety(5).
STANDARDS CONFORMANCE wordexp(3C)