bash --help
GNU bash, version 4.2.46(2)-release-(x86_64-redhat-linux-gnu)Usage: bash [GNU long option] [option] ...bash [GNU long option] [option] script-file ...GNU long options:--debug--debugger--dump-po-strings--dump-strings--help--init-file--login--noediting--noprofile--norc--posix--protected--rcfile--rpm-requires--restricted--verbose--versionShell options:-irsD or -c command or -O shopt_option (invocation only)-abefhkmnptuvxBCHP or -o option输入 `bash -c "help set"` 获取有关 Shell 选项的更多信息。输入 `bash -c help` 获取更多关于 Shell 内建命令的信息。
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
这些 shell 命令是内部定义的。输入 help 查看这个列表。
输入 help name 了解更多关于命令 name 的信息。
使用 info bash 了解关于 shell 的更多信息。
使用 man -k 或 info 查找更多不在此列表中的命令。
如果命令旁边有星号(*),表示该命令已被禁用。
xxxxxxxxxxjob_spec [&] history [-c] [-d offset] [n] or history -anrw [fi>(( expression )) if COMMANDS; then COMMANDS; [ elif COMMANDS; then>. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs -x command [a>: kill [-s sigspec | -n signum | -sigspec] pid | jo>[ arg... ] let arg [arg ...][[ expression ]] local [option] name[=value] ...alias [-p] [name[=value] ... ] logout [n]bg [job_spec ...] mapfile [-n count] [-O origin] [-s count] [-t] [->bind [-lpvsPVS] [-m keymap] [-f filename] [-q name> popd [-n] [+N | -N]break [n] printf [-v var] format [arguments]builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]caller [expr] pwd [-LP]case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]> read [-ers] [-a array] [-d delim] [-i text] [-n n>cd [-L|[-P [-e]]] [dir] readarray [-n count] [-O origin] [-s count] [-t] >command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] or readonly -p>compgen [-abcdefgjksuv] [-o option] [-A action] [> return [n]complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [> select NAME [in WORDS ... ;] do COMMANDS; donecompopt [-o|+o option] [-DE] [name ...] set [-abefhkmnptuvxBCHP] [-o option-name] [--] [a>continue [n] shift [n]coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]declare [-aAfFgilrtux] [-p] [name[=value] ...] source filename [arguments]dirs [-clpv] [+N] [-N] suspend [-f]disown [-h] [-ar] [jobspec ...] test [expr]echo [-neE] [arg ...] time [-p] pipelineenable [-a] [-dnps] [-f filename] [name ...] timeseval [arg ...] trap [-lp] [[arg] signal_spec ...]exec [-cl] [-a name] [command [arguments ...]] [re> trueexit [n] type [-afptP] name [name ...]export [-fn] [name[=value] ...] or export -p typeset [-aAfFgilrtux] [-p] name[=value] ...false ulimit [-SHacdefilmnpqrstuvx] [limit]fc [-e ename] [-lnr] [first] [last] or fc -s [pat=> umask [-p] [-S] [mode]fg [job_spec] unalias [-a] name [name ...]for NAME [in WORDS ... ] ; do COMMANDS; done unset [-f] [-v] [name ...]for (( exp1; exp2; exp3 )); do COMMANDS; done until COMMANDS; do COMMANDS; donefunction name { COMMANDS ; } or name () { COMMANDS> variables - Names and meanings of some shell vari>getopts optstring name [arg] wait [id]hash [-lr] [-p pathname] [-dt] [name ...] while COMMANDS; do COMMANDS; donehelp [-dms] [pattern ...] { COMMANDS ; }
help .
x.: . 文件名 [参数]在当前 shell 中执行来自文件的命令。从文件名 FILENAME 中读取并执行命令,在当前 shell 中执行。$PATH 中的条目用于查找包含 FILENAME 的目录。如果提供了任何参数,它们将在执行 FILENAME 时成为位置参数。退出状态:返回在 FILENAME 中执行的最后一个命令的状态;如果无法读取 FILENAME,则失败。
help source
xxxxxxxxxxsource: source 文件名 [参数]在当前 shell 中执行来自文件的命令。从文件名 FILENAME 中读取并执行命令,在当前 shell 中执行。$PATH 中的条目用于查找包含 FILENAME 的目录。如果提供了任何参数,它们将在执行 FILENAME 时成为位置参数。退出状态:返回在 FILENAME 中执行的最后一个命令的状态;如果无法读取 FILENAME,则失败。
help '(( ... ))'
xxxxxxxxxx(( ... )): (( expression ))评估算术表达式。EXPRESSION 根据算术评估规则进行计算。等效于 let "EXPRESSION"。退出状态:如果 EXPRESSION 的结果为 0,返回 1;否则返回 0。
help test
xxxxxxxxxxtest: test [expr]评估条件表达式。根据 EXPR 的评估结果,退出状态为 0(真)或 1(假)。表达式可以是单一的或双重的。单一表达式通常用于检查文件的状态。也有字符串操作符和数字比较操作符。`test` 命令的行为取决于参数的数量。有关完整的规格说明,请阅读 bash 手册页。
文件操作符:
-a FILE:如果文件存在,则为真。-b FILE:如果文件是块设备,则为真。-c FILE:如果文件是字符设备,则为真。-d FILE:如果文件是目录,则为真。-e FILE:如果文件存在,则为真。-f FILE:如果文件存在并且是普通文件,则为真。-g FILE:如果文件设置了组ID,则为真。-h FILE:如果文件是符号链接,则为真。-L FILE:如果文件是符号链接,则为真。-k FILE:如果文件设置了“粘性”位,则为真。-p FILE:如果文件是命名管道,则为真。-r FILE:如果文件对您可读,则为真。-s FILE:如果文件存在且不为空,则为真。-S FILE:如果文件是套接字,则为真。-t FD:如果 FD 是一个打开的终端,则为真。-u FILE:如果文件设置了用户ID,则为真。-w FILE:如果文件对您可写,则为真。-x FILE:如果文件对您可执行,则为真。-O FILE:如果文件实际上是由您拥有,则为真。-G FILE:如果文件实际上是由您的组拥有,则为真。-N FILE:如果文件自上次读取以来已被修改,则为真。文件比较操作符:
FILE1 -nt FILE2:如果文件1比文件2更新(根据修改日期),则为真。FILE1 -ot FILE2:如果文件1比文件2旧,则为真。FILE1 -ef FILE2:如果文件1是文件2的硬链接,则为真。除了 -h 和 -L 操作符,所有文件操作符都是针对符号链接的目标文件,而不是符号链接本身。
字符串操作符:
-z STRING:如果字符串为空,则为真。-n STRING:如果字符串非空,则为真。STRING1 = STRING2:如果两个字符串相等,则为真。STRING1 != STRING2:如果两个字符串不相等,则为真。STRING1 < STRING2:如果字符串1按字典顺序排在字符串2之前,则为真。STRING1 > STRING2:如果字符串1按字典顺序排在字符串2之后,则为真。其他操作符:
-o OPTION:如果启用了 shell 选项 OPTION,则为真。-v VAR:如果 shell 变量 VAR 已设置,则为真。-R VAR:如果 shell 变量 VAR 已设置并且是一个名称引用,则为真。! EXPR:如果表达式 EXPR 为假,则为真。EXPR1 -a EXPR2:如果表达式1和表达式2都为真,则为真。EXPR1 -o EXPR2:如果表达式1或表达式2为真,则为真。算术操作符:
arg1 OP arg2:算术测试,OP 为 -eq(等于),-ne(不等于),-lt(小于),-le(小于等于),-gt(大于),或 -ge(大于等于)。算术二元操作符如果 ARG1 等于、不同于、小于、小于等于、大于或大于等于 ARG2,则返回真。
有关参数处理的详细信息(即缺少参数的情况),请参见 bash 手册页 bash(1)。
退出状态: 如果 EXPR 评估为真,则返回成功;如果 EXPR 评估为假或给出了无效的参数,则返回失败。
help [
xxxxxxxxxx[: [ arg... ]评估条件表达式。这是 test 内建命令的同义词,但最后一个参数必须是字面量的 ],以匹配开头的 [。
help '[[ ... ]]'
xxxxxxxxxx[[ ... ]]: [[ expression ]]执行条件命令。根据条件表达式 EXPRESSION 的评估结果返回状态 0 或 1。表达式由与 test 内建命令相同的基本元素组成,并可以使用以下运算符组合:( EXPRESSION ):返回 EXPRESSION 的值! EXPRESSION:如果 EXPRESSION 为假,则返回真;否则返回假EXPR1 && EXPR2:如果 EXPR1 和 EXPR2 都为真,则返回真;否则返回假EXPR1 || EXPR2:如果 EXPR1 或 EXPR2 其中之一为真,则返回真;否则返回假当使用 == 和 != 运算符时,右侧的字符串会作为模式进行模式匹配。当使用 =~ 运算符时,右侧的字符串作为正则表达式进行匹配。如果 EXPR1 足以确定表达式的值,&& 和 || 运算符不会评估 EXPR2。退出状态:根据 EXPRESSION 的值返回 0 或 1。
xxxxxxxxxxlet: let arg [arg ...]评估算术表达式。对每个 ARG 作为算术表达式进行评估。评估使用定宽整数进行,并且不会检查溢出,除非除以 0,会被捕获并标记为错误。以下是按优先级顺序分组的操作符列表,操作符优先级依次递减:id++, id-- 变量后递增,后递减++id, --id 变量前递增,前递减-, + 一元负号,正号!, ~ 逻辑和按位取反** 幂运算*, /, % 乘法,除法,取余+, - 加法,减法<<, >> 左右移位(按位)<=, >=, <, > 比较==, != 相等,不相等& 按位与^ 按位异或| 按位或&& 逻辑与|| 逻辑或expr ? expr : expr 条件操作符=, *=, /=, %=,+=, -=, <<=, >>=,&=, ^=, |= 赋值操作符Shell 变量可以作为操作数。变量的名字会被替换为其值(转换为定宽整数)进行计算。变量不需要开启整数属性就可以在表达式中使用。操作符按照优先级规则进行评估。括号中的子表达式会优先计算,并且可以覆盖上述优先级规则。退出状态:如果最后一个 ARG 的值为 0,let 返回 1;否则返回 0。
xxxxxxxxxx{ ... }: { COMMANDS ; }将命令组合作为一个单元。将一组命令作为一个整体执行。这是重定向整个命令集的一种方式。退出状态:返回执行的最后一个命令的状态。
help :
xxxxxxxxxx:: :空命令(Null command)。作用:该命令不执行任何操作,什么也不做。退出状态:始终成功(Always succeeds)。
冒号 : 是一个内置的 shell 命令,它什么也不做,返回一个成功的退出状态(返回值为 0)。
help true
xxxxxxxxxxtrue: true作用:返回成功的结果。退出状态:始终成功(Always succeeds)。
true 是一个命令,它总是成功(返回 0),可以作为空命令的替代。
hep false
xxxxxxxxxxfalse: false作用:返回不成功的结果。退出状态:始终失败(Always fails)。
false 是一个命令,它总是失败(返回 1),也可以用于空命令的需求。
help return
xxxxxxxxxxreturn: return [n]作用:从 shell 函数返回。解释:使函数或被 sourced 的脚本退出,并返回指定的值 N。如果没有指定 N,则返回上一个在函数或脚本内执行的命令的状态码。退出状态:返回 N,或者如果当前 shell 没有执行函数或脚本,则返回失败。
help exit
xxxxxxxxxxexit: exit [n]作用:退出当前 shell。解释:以状态码 N 退出 shell。如果没有指定 N,则会使用上一个执行命令的退出状态码。
exit命令用于退出shell,并返回给定值。
在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。
常用退出码
退出码(exit status,或exit code)的约定:
xxxxxxxxxx0表示成功(Zero - Success)非0表示失败(Non-Zero - Failure)1表示参数错误2表示用法不当(Incorrect Usage)126表示不是可执行的(Not an executable)127表示命令没有找到(Command Not Found)>=128 信号产生
help variables
xxxxxxxxxx变量:变量 - 一些 shell 变量的名称和含义常见的 shell 变量名称和用法。BASH_VERSION 当前 Bash 的版本信息。CDPATH 用冒号分隔的目录列表,表示 `cd` 命令在寻找目录时要搜索的目录。GLOBIGNORE 用冒号分隔的模式列表,描述要被路径扩展忽略的文件名。HISTFILE 存储命令历史记录的文件名。HISTFILESIZE 该文件可以包含的最大行数。HISTSIZE 当前 shell 可以访问的最大历史记录行数。HOME 当前登录目录的完整路径名。HOSTNAME 当前主机的名称。HOSTTYPE 当前 Bash 运行时所在的 CPU 类型。IGNOREEOF 控制 shell 在收到 EOF 字符作为唯一输入时的行为。如果设置了该变量,则它的值表示在空行中看到的连续 EOF 字符数,超过该数量后 shell 会退出(默认为 10)。未设置时,EOF 表示输入结束。MACHTYPE 一个字符串,描述当前 Bash 运行的系统类型。MAILCHECK Bash 检查新邮件的频率(以秒为单位)。MAILPATH 用冒号分隔的文件名列表,Bash 会检查这些文件中是否有新邮件。OSTYPE 当前 Bash 运行的 Unix 版本。PATH 用冒号分隔的目录列表,表示在查找命令时要搜索的目录。PROMPT_COMMAND 每次打印主提示符之前要执行的命令。PS1 主提示符字符串。PS2 次级提示符字符串。PWD 当前目录的完整路径名。SHELLOPTS 启用的 shell 选项列表(以冒号分隔)。TERM 当前终端类型的名称。TIMEFORMAT `time` 预留字显示的计时统计信息的输出格式。auto_resume 非空表示命令行中单独出现的命令词会首先在当前停止的作业列表中查找。如果找到,则该作业会被置于前台。`exact` 的值表示命令词必须完全匹配停止作业列表中的某个命令,`substring` 表示命令词必须匹配停止作业的子串,任何其他值表示命令必须是停止作业的前缀。histchars 控制历史扩展和快速替换的字符。第一个字符是历史替换字符,通常是 `!`。第二个是快速替换字符,通常是 `^`。第三个是历史注释字符,通常是 `#`。HISTIGNORE 用冒号分隔的模式列表,用于决定哪些命令应该保存在历史列表中。
help declare
xxxxxxxxxxdeclare: declare [-aAfFgilrtux] [-p] [name[=value] ...]设置变量值和属性。声明变量并赋予它们属性。如果没有提供名称,将显示所有变量的属性和值。选项:-f 限制操作或显示为函数名和定义-F 限制显示仅为函数名(调试时还会显示行号和源文件)-g 在 shell 函数中创建全局变量;否则忽略-p 显示每个名称的属性和值设置属性的选项:-a 将名称设置为索引数组(如果支持)-A 将名称设置为关联数组(如果支持)-i 将名称设置为 integer “整数”属性-l 在赋值时将名称转换为小写-r 将名称设置为只读-t 将名称设置为 trace “追踪”属性-u 在赋值时将名称转换为大写-x 将名称导出使用 `+` 代替 `-` 可以关闭指定的属性。具有整数属性的变量在赋值时会执行算术运算(见 `let` 命令)。当在函数中使用 `declare` 时,名称会变为局部变量,类似于 `local` 命令。`-g` 选项可以抑制这种行为。退出状态:除非提供了无效选项或发生错误,否则返回成功。
在 Linux 中,declare 命令主要用于声明变量的属性,尤其是在 Shell 脚本编程中。它有几个用途,包括声明变量的类型、属性和设置变量的值。declare 命令若不带任何参数选项,则会显示所有 Shell 变量及其值。
需要注意的是,declare 命令在交互式 shell 中可能不如在脚本中常见,因为它通常用于在脚本中显式声明变量的属性。在交互式 shell 中,通常直接使用简单的变量赋值语句。
help export
xxxxxxxxxxexport: export [-fn] [name[=value] ...] 或 export -p设置 shell 变量的导出属性。将每个名称(NAME)标记为自动导出到后续执行的命令的环境中。如果提供了值(VALUE),则在导出之前会先赋值。选项:-f 引用 shell 函数-n 移除每个名称的导出属性-p 显示所有已导出的变量和函数的列表参数 `--` 用于禁用进一步的选项处理。退出状态:除非提供了无效选项或名称无效,否则返回成功。
在Linux系统中,export命令主要用于设置环境变量。环境变量在操作系统中起到了重要的作用,它们定义了系统操作的方方面面,例如用户的个人配置和系统的全局设置。通过export命令,我们可以在当前会话中设置环境变量。
help set
xxxxxxxxxxset: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]设置或取消设置 shell 选项和值的位置参数。改变 shell 属性和值的位置参数,或显示 shell 变量的名称和值。选项:-a 标记被修改或创建的变量以进行导出。-b 立即通知作业终止。-e 如果命令以非零状态退出,则立即退出。-f 禁用文件名生成(通配符扩展)。-h 记住命令的位置,当它们被查找时。-k 所有赋值参数都放置在环境变量中,而不仅仅是那些位于命令名称之前的。-m 启用作业控制。-n 读取命令但不执行它们。-o option-name设置与 option-name 对应的变量:allexport 同 -abraceexpand 同 -Bemacs 使用 emacs 风格的行编辑接口errexit 同 -eerrtrace 同 -Efunctrace 同 -Thashall 同 -hhistexpand 同 -Hhistory 启用命令历史ignoreeof 读取到 EOF 时,shell 不会退出interactive-comments 允许在交互式命令中出现注释keyword 同 -kmonitor 同 -mnoclobber 同 -Cnoexec 同 -nnoglob 同 -fnolog 当前被接受但被忽略notify 同 -bnounset 同 -uonecmd 同 -tphysical 同 -Ppipefail 管道的返回值是最后一个以非零状态退出的命令的状态,或者如果没有命令以非零状态退出,则为零posix 当 bash 的默认操作与 Posix 标准不同的时候,改变 bash 的行为以匹配该标准privileged 同 -pverbose 同 -vvi 使用 vi 风格的行编辑接口xtrace 同 -x-p 当真实用户ID和有效用户ID不匹配时会启用。禁用 $ENV 文件的处理和导入 shell 函数。关闭此选项时,会将有效的 UID 和 GID 设置为真实的 UID 和 GID。-t 读取并执行一个命令后退出。-u 在替换时,将未设置的变量视为错误。-v 打印 shell 输入行,逐行读取时。-x 打印命令及其参数,在执行时。-B shell 将执行大括号扩展。-C 如果设置,禁止通过重定向输出覆盖现有的常规文件。-E 如果设置,ERR 捕获会被继承到 shell 函数中。-H 启用 ! 风格的历史替换。此标志在交互式 shell 中默认开启。-P 如果设置,执行命令(如 cd)时不会跟随符号链接改变当前目录。-T 如果设置,DEBUG 捕获会被继承到 shell 函数中。-- 将所有剩余参数分配给位置参数。如果没有剩余参数,则位置参数会被取消设置。- 将所有剩余参数分配给位置参数。-x 和 -v 选项将被关闭。使用 + 而不是 - 会导致这些标志被关闭。标志也可以在 shell 启动时使用。当前的标志集可以在 $- 中找到。剩余的 n 个 ARG 是位置参数,并按顺序分配给 \$1, \$2, .. $n。如果没有给出 ARG,则会打印所有 shell 变量。退出状态:除非给出无效的选项,否则返回成功。
set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值(包括函数)。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。
1.命令格式:
set [选项] [参数]
2.命令选项:
xxxxxxxxxx-a:标示已修改的变量,以供输出至环境变量。-b:使被中止的后台程序立刻回报执行状态。-C:转向所产生的文件无法覆盖已存在的文件。-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。-e:若指令传回值不等于0,则立即退出shell。-f:取消使用通配符。-h:自动记录函数的所在位置。-H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。-k:指令所给的参数都会被视为此指令的环境变量。-l:记录for循环的变量名称。-m:使用监视模式。-n:只读取指令,而不实际执行。-p:启动优先顺序模式。-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。-t:执行完随后的指令,即退出shell。-u:当执行时使用到未定义过的变量,则显示错误信息。-v:显示shell所读取的输入值。-x:执行指令后,会先显示该指令及所下的参数。
3.命令参数: 取消某个set曾启动的参数。
4.实例
使用declare命令定义一个新的环境变量"mylove",并且将其值设置为"Visual C++",输入如下命令:
xxxxxxxxxxdeclare mylove='Visual C++' #定义新环境变量再使用set命令将新定义的变量输出为环境变量,输入如下命令:
xxxxxxxxxxset -a mylove #设置为环境变量执行该命令后,将会新添加对应的环境变量。用户可以使用env命令和grep命令分别显示和搜索环境变量"mylove",输入命令如下:
xxxxxxxxxxenv | grep mylove #显示环境变量值此时,该命令执行后,将输出查询到的环境变量值。
Linux unset命令用于删除变量或函数。只读变量不能被取消设置。
unset为shell内建指令,可删除变量或函数。
语法
xxxxxxxxxxunset [-fv][变量或函数名称]
参数:
help echo
xxxxxxxxxxecho 命令:echo [-neE] [arg ...]将参数写入标准输出。显示参数(ARGs),并在末尾添加一个换行符。选项:-n:不附加换行符。-e:启用以下反斜杠转义字符的解释。-E:明确禁止反斜杠转义字符的解释。echo 解释以下反斜杠转义字符:\a:警报(铃声)\b:退格\c:抑制后续输出\e:转义字符\f:换页\n:换行\r:回车\t:水平制表符\v:垂直制表符\\:反斜杠\0nnn:ASCII 代码为 NNN(八进制)的字符。NNN 可以是 0 到 3 个八进制数字\xHH:值为 HH(十六进制)的 8 位字符。HH 可以是一个或两个十六进制数字退出状态:返回成功,除非发生写入错误。
xxxxxxxxxxalias: alias [-p] [name[=value] ... ]定义或显示别名。如果没有提供参数,`alias` 会打印出当前定义的别名列表,格式为 `alias NAME=VALUE`,输出到标准输出。否则,会为每个给定名称(NAME)定义一个别名,并为其赋值(VALUE)。如果值(VALUE)末尾有一个空格,则在展开别名时会检查下一个单词是否需要进行别名替换。选项:-p 以可重用的格式打印所有定义的别名退出状态:如果没有提供名称且该名称未定义别名,`alias` 返回失败。否则返回成功。
参考: alias.md
xxxxxxxxxxunalias: unalias [-a] name [name ...]从已定义的别名列表中移除每个 NAME。选项:-a 移除所有别名定义返回成功,除非 NAME 不是一个已存在的别名。
xxxxxxxxxxshift 命令:shift [n]功能:移动位置参数。将位置参数 $N+1、$N+2、... 重命名为 $1、$2、...。如果没有提供 n,则默认为 1。退出状态:成功时返回 0。如果 n 为负值或大于当前位置参数的数量($#),则返回非零值。
位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。 非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。
测试 shift 命令(x_shift.sh)
xxxxxxxxxxuntil [ $# -eq 0 ]doecho "第一个参数为: $1 参数个数为: $#"shiftdone$./x_shift.sh 1 2 3 4
结果显示如下:
xxxxxxxxxx第一个参数为: 1 参数个数为: 4第一个参数为: 2 参数个数为: 3第一个参数为: 3 参数个数为: 2第一个参数为: 4 参数个数为: 1
Shift 命令还有另外一个重要用途, Bash 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。 Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。
没有help,将该任何放入后台运行
xxxxxxxxxxwait: wait [-fn] [-p var] [id ...]等待作业完成并返回退出状态。等待每个通过 ID 标识的进程,ID 可以是进程 ID 或作业规范,并报告其终止状态。如果未指定 ID,则等待所有当前活跃的子进程,返回状态为零。如果 ID 是作业规范,则等待该作业管道中所有进程。如果提供了 -n 选项,则等待 ID 列表中的单个作业,或者如果没有提供 ID,则等待下一个作业完成,并返回其退出状态。如果提供了 -p 选项,返回退出状态的作业或进程标识符将分配给由选项参数指定的变量 VAR。在进行任何赋值之前,该变量将被初始化为未设置状态。只有在提供 -n 选项时,这才有用。如果提供了 -f 选项,并且启用了作业控制,则等待指定的 ID 终止,而不是等待其状态变化。退出状态:返回最后一个 ID 的状态;如果 ID 无效或提供了无效选项,或者如果提供了 -n 选项且 shell 没有未等待的子进程,则失败。
xxxxxxxxxxjobs 命令:jobs [-lnprs] [jobspec ...] 或 jobs -x command [args]功能:显示作业的状态。列出所有活动的作业。如果提供 JOBSPEC,则仅显示该作业的状态。如果没有指定任何选项,将显示所有活动作业的状态。选项:-l:除了正常的信息外,还列出进程 ID。-n:仅列出自上次通知以来状态已更改的进程。-p:仅列出进程 ID。-r:仅显示正在运行的作业。-s:仅显示已停止的作业。如果使用 -x 选项,COMMAND 会在所有作业规范(jobspec)被替换为该作业的进程组领导进程的进程 ID 后运行。退出状态:成功时返回 0。如果给定了无效的选项或发生错误,则返回非零值。如果使用了 -x 选项,返回 COMMAND 的退出状态。
xxxxxxxxxxbg 命令:bg [job_spec ...]功能:将作业移到后台运行。将每个通过 `JOB_SPEC` 标识的作业移到后台,就像它们是通过 `&` 启动的一样。如果没有提供 `JOB_SPEC`,则使用当前作业。退出状态:成功时返回 0。如果未启用作业控制或发生错误,则返回非零值。
xxxxxxxxxxfg 命令:fg [job_spec]功能:将作业移到前台运行。将通过 `JOB_SPEC` 标识的作业移到前台,使其成为当前作业。如果没有提供 `JOB_SPEC`,则使用当前作业。退出状态:如果成功将作业移到前台,返回该命令的状态。如果发生错误,则返回非零值。
xxxxxxxxxxdisown 命令:disown [-h] [-ar] [jobspec ...]功能:将作业从当前 shell 中移除。移除每个通过 `JOB_SPEC` 标识的作业,从活动作业表中删除。如果没有提供 `JOB_SPEC`,则 shell 会使用当前作业。选项:-a:如果未提供 `JOBSPEC`,移除所有作业。-h:将每个 `JOBSPEC` 标记为如果 shell 接收到 `SIGHUP` 信号时,不向该作业发送 `SIGHUP`。-r:只移除正在运行的作业。退出状态:成功时返回 0。如果提供了无效的选项或 JOBSPEC,则返回非零值。
xxxxxxxxxxif: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi执行基于条件的命令。首先执行 if COMMANDS 命令。如果其退出状态为零(表示成功),则执行 then COMMANDS 命令。如果 if COMMANDS 的退出状态非零(表示失败),则依次执行每个 elif COMMANDS 命令,并且如果其退出状态为零,则执行相应的 then COMMANDS 命令,此时整个 if 语句结束。如果没有任何条件为真且存在 else COMMANDS,则执行 else COMMANDS 命令。整个结构的退出状态是最后一个执行命令的退出状态,或者如果没有条件为真,则返回零。退出状态:返回最后执行的命令的退出状态。
help for
xxxxxxxxxxfor: for NAME [in WORDS ... ] ; do COMMANDS; done对列表中的每个成员执行命令。`for` 循环对每个列表中的元素执行一系列命令。如果没有 `in WORDS ...;`,则默认使用 `in "$@"`。对于 WORDS 中的每个元素,NAME 被设置为该元素,然后执行 COMMANDS。退出状态:返回执行的最后一个命令的状态。
help 'for (('
xxxxxxxxxxfor ((: for (( exp1; exp2; exp3 )); do COMMANDS; done算术 for 循环。等效于:(( EXP1 ))while (( EXP2 )); doCOMMANDS(( EXP3 ))doneEXP1、EXP2 和 EXP3 是算术表达式。如果任何表达式被省略,则其行为如同该表达式的值为 1。退出状态:返回最后执行命令的状态。
xxxxxxxxxxwhile: while COMMANDS; do COMMANDS; done在测试成功的情况下执行命令。扩展并执行 COMMANDS,只要 `while` 命令中的最后一个命令的退出状态为零(即成功)。退出状态:返回执行的最后一个命令的状态。
xxxxxxxxxxuntil: until COMMANDS; do COMMANDS; done只要测试未成功,就执行命令。扩展并执行 COMMANDS,只要 `until` 命令中的最后一条命令的退出状态不是零。退出状态:返回最后执行的命令的状态。
xxxxxxxxxxbreak: break [n]退出 for、while 或 until 循环。退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了 N,则退出 N 层嵌套的循环。退出状态:退出状态为 0,除非 N 小于 1。
xxxxxxxxxxcontinue: continue [n]恢复 for、while 或 until 循环。恢复外层 FOR、WHILE 或 UNTIL 循环的下一次迭代。如果指定了 N,则恢复第 N 层嵌套循环的下一次迭代。退出状态:退出状态为 0,除非 N 小于 1。