#!/bin/bash
#loop for...do...done
#style 1 for (( 初始值; 限制值; 步长值 ))
# do
# xxx
# done
for ((i=0;i<10;i++))
do
echo "thisis$i"
done
#you also can do this in one line;
for ((i=0;i<10;i++)); do echo "thisis$i";done
#sytle 2
#for var in con1 con2 con3 ...
#do
# xxx
#done
a=`ls`
for i in $a
do
echo $i
done
#for i in $a; do echo $i; echo "tt"; done;
for i in {1..10};do echo $i ;done;
for File in 1 2 3 4 5;do echo $File ;done;
for name [ [ in [ word ... ] ] ; ] do list ; done
The list of words following in is expanded, generating a list of items. The variable name is set to each element of this list in turn, and
list is executed each time. If the in word is omitted, the for command executes list once for each positional parameter that is set (see
PARAMETERS below). The return status is the exit status of the last command that executes. If the expansion of the items following in
results in an empty list, no commands are executed, and the return status is 0.
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
First, the arithmetic expression expr1 is evaluated according to the rules described below under ARITHMETIC EVALUATION. The arithmetic
expression expr2 is then evaluated repeatedly until it evaluates to zero. Each time expr2 evaluates to a non-zero value, list is executed
and the arithmetic expression expr3 is evaluated. If any expression is omitted, it behaves as if it evaluates to 1. The return value is
the exit status of the last command in list that is executed, or false if any of the expressions is invalid.
select name [ in word ] ; do list ; done
The list of words following in is expanded, generating a list of items. The set of expanded words is printed on the standard error, each
preceded by a number. If the in word is omitted, the positional parameters are printed (see PARAMETERS below). The PS3 prompt is then
displayed and a line read from the standard input. If the line consists of a number corresponding to one of the displayed words, then the
value of name is set to that word. If the line is empty, the words and prompt are displayed again. If EOF is read, the command completes.
Any other value read causes name to be set to null. The line read is saved in the variable REPLY. The list is executed after each selec‐
tion until a break command is executed. The exit status of select is the exit status of the last command executed in list, or zero if no
commands were executed.
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against each pattern in turn, using the same matching rules as for pathname expan‐
sion (see Pathname Expansion below). The word is expanded using tilde expansion, parameter and variable expansion, arithmetic substitu‐
tion, command substitution, process substitution and quote removal. Each pattern examined is expanded using tilde expansion, parameter and
variable expansion, arithmetic substitution, command substitution, and process substitution. If the shell option nocasematch is enabled,
the match is performed without regard to the case of alphabetic characters. When a match is found, the corresponding list is executed. If
the ;; operator is used, no subsequent matches are attempted after the first pattern match. Using ;& in place of ;; causes execution to
continue with the list associated with the next set of patterns. Using ;;& in place of ;; causes the shell to test the next pattern list
in the statement, if any, and execute any associated list on a successful match. The exit status is zero if no pattern matches. Other‐
wise, it is the exit status of the last command executed in list.
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
The if list is executed. If its exit status is zero, the then list is executed. Otherwise, each elif list is executed in turn, and if its
exit status is zero, the corresponding then list is executed and the command completes. Otherwise, the else list is executed, if present.
The exit status is the exit status of the last command executed, or zero if no condition tested true.
while list; do list; done
until list; do list; done
The while command continuously executes the do list as long as the last command in list returns an exit status of zero. The until command
is identical to the while command, except that the test is negated; the do list is executed as long as the last command in list returns a
non-zero exit status. The exit status of the while and until commands is the exit status of the last do list command executed, or zero if
none was executed.
CONDITIONAL EXPRESSIONS
Conditional expressions are used by the [[ compound command and the test and [ builtin commands to test file attributes and perform string and
arithmetic comparisons. Expressions are formed from the following unary or binary primaries. If any file argument to one of the primaries is of
the form /dev/fd/n, then file descriptor n is checked. If the file argument to one of the primaries is one of /dev/stdin, /dev/stdout, or
/dev/stderr, file descriptor 0, 1, or 2, respectively, is checked.
Unless otherwise specified, primaries that operate on files follow symbolic links and operate on the target of the link, rather than the link
itself.
When used with [[, The < and > operators sort lexicographically using the current locale.
See the description of the test builtin command (section SHELL BUILTIN COMMANDS below) for the handling of parameters (i.e. missing parameters).
-a file
True if file exists.
-b file
True if file exists and is a block special file.
-c file
True if file exists and is a character special file.
-d file
True if file exists and is a directory.
-e file
True if file exists.
-f file
True if file exists and is a regular file.
-g file
True if file exists and is set-group-id.
-h file
True if file exists and is a symbolic link.
-k file
True if file exists and its ``sticky'' bit is set.
-p file
True if file exists and is a named pipe (FIFO).
-r file
True if file exists and is readable.
-s file
True if file exists and has a size greater than zero.
-t fd True if file descriptor fd is open and refers to a terminal.
-u file
True if file exists and its set-user-id bit is set.
-w file
True if file exists and is writable.
-x file
True if file exists and is executable.
-O file
True if file exists and is owned by the effective user id.
-G file
True if file exists and is owned by the effective group id.
-L file
True if file exists and is a symbolic link.
-S file
True if file exists and is a socket.
-N file
True if file exists and has been modified since it was last read.
file1 -nt file2
True if file1 is newer (according to modification date) than file2, or if file1 exists and file2 does not.
file1 -ot file2
True if file1 is older than file2, or if file2 exists and file1 does not.
file1 -ef file2
True if file1 and file2 refer to the same device and inode numbers.
-o optname
True if shell option optname is enabled. See the list of options under the description of the -o option to the set builtin below.
-z string
True if the length of string is zero.
string
-n string
True if the length of string is non-zero.
string1 == string2
string1 = string2
True if the strings are equal. = should be used with the test command for POSIX conformance.
string1 != string2
True if the strings are not equal.
string1 < string2
True if string1 sorts before string2 lexicographically.
string1 > string2
True if string1 sorts after string2 lexicographically.
arg1 OP arg2
OP is one of -eq, -ne, -lt, -le, -gt, or -ge. These arithmetic binary operators return true if arg1 is equal to, not equal to, less than,
less than or equal to, greater than, or greater than or equal to arg2, respectively. Arg1 and arg2 may be positive or negative integers.
阅读(1086) | 评论(0) | 转发(0) |