在shell中常用的特殊符号罗列如下: 



# ;   ;; . , / \\ 'string'| !   $   ${}   $? $$   $* 



\"string\"* **   ? : ^ $#   $@ `command`{}   [] [[]] ()   (()) 



||   && {xx,yy,zz,...}~   ~+   ~-   &   \\<...\\>   + - %=   ==   !=

# 井号 (comments)

这几乎是个满场都有的符号,除了先前已经提过的"第一行" ,用来指定脚本使用的shell类型:

#!/bin/bash 

井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行: 

# This line is comments. 

echo "a = $a" # a = 0 

由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在撰写过程中: 

#echo "a = $a" # a = 0 

如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

echo "#"

echo \#

另外,#还能用于参数扩展中“去除掉前缀的[word]最小匹配和最大匹配”,例如:

code_all=(0 0 12 22 0 65 35 0 0)

echo ${code_all[*]/#0/}                    #能够去掉code_all数组中的所有的0开头的数组项。

~ 帐户的 home 目录

算是个常见的符号,代表使用者的 home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user或者当成是路径的一部份:~/bin 

~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。 

# echo ~+/var/log 

~- 上次的工作目录,这个符号代表上次的工作目录。 

# echo ~-/etc/httpd/logs

; 分号 (Command separator)

在 shell 中,担任\"连续指令\"功能的符号就是\"分号\"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.

;; 连续分号 (Terminator)

专用在 case 的选项,担任 Terminator 的角色。 

case \"$fop\" inhelp) echo \"Usage: Command -help -version filename\";;version) echo \"version 0.1\" ;;esac

. 逗号 (dot,就是“点”)

在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。 

CDPATH=.:~:/home:/home/web:/var:/usr/local 

在上行 CDPATH 的设定中,等号后的 dot 代表的就是当前目录的意思。 

如果档案名称以 dot 开头,该档案就属特殊档案,用 ls 指令必须加上 -a 选项才会显示。除此之外,在 regularexpression 中,一个 dot 代表匹配一个字元。

'string' 单引号 (single quote)

被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。 

heyyou=homeecho '$heyyou' # We get $heyyou

"string" 双引号 (double quote)

被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。 

heyyou=homeecho \"$heyyou\" # We get home

`command` 倒引号 (backticks)

在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用倒单引号来做。 

fdv=`date +%F`echo \"Today $fdv\" 

在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变数中。 





, 逗点 (comma,标点中的逗号) 

这个符号常运用在运算当中当做\"区隔\"用途。如下例 

#!/bin/bashlet \"t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))\"echo \"t1= $t1, a = $a, b = $b\" 





/ 斜线 (forward slash) 

在路径表示时,代表目录。 

cd /etc/rc.dcd ../..cd / 

通常单一的 / 代表 root 根目录的意思;在四则运算中,代表除法的符号。 

let \"num1 = ((a = 10 / 2, b = 25 / 5))\" 





\\ 倒斜线 

在交互模式下的escape 字元,有几个作用;放在指令前,有取消 aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。 

# type rmrm is aliased to `rm -i'# \\rm ./*.log 

上例,我在 rm 指令前加上 escape 字元,作用是暂时取消别名的功能,将 rm 指令还原。 

# bkdir=/home# echo \"Backup dir, \\$bkdir = $bkdir\"Backup dir,$bkdir = /home 

上例 echo 内的 \\$bkdir,escape 将 $ 变数的功能取消了,因此,会输出 $bkdir,而第二个 $bkdir则会输出变数的内容 /home。 





| 管道 (pipeline) 

pipeline 是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。 

who | wc -l 

善用这个观念,对精简 script 有相当的帮助。 





! 惊叹号(negate or reverse) 

通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表\"不等于\" 

if [ \"$?\" != 0 ]thenecho \"Executes error\"exit 1fi 

在规则表达式中她担任 \"反逻辑\" 的角色 

ls a[!0-9] 

上例,代表显示除了a0, a1 .... a9 这几个文件的其他文件。 





: 冒号 

在 bash 中,这是一个内建指令:\"什么事都不干\",但返回状态值 0。 



echo $? # 回应为 0 

: > f.$$ 

上面这一行,相当于 cat /dev/null >f.$$。不仅写法简短了,而且执行效率也好上许多。 

有时,也会出现以下这类的用法 

: ${HOSTNAME?} ${USER?} ${MAIL?} 

这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。像这种检查如果使用类似
test 或 if这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。 





? 问号 (wild card) 

在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元,但不包含 null 字元。 

# ls a?a1 

善用她的特点,可以做比较精确的档名匹配。 





* 星号 (wild card) 

相当常用的符号。在文件名扩展(Filename expansion)上,她用来代表任何字元,包含 null 字元。 

# ls a*a a1 access_log 

在运算时,它则代表 \"乘法\"。 

let \"fmult=2*3\" 

除了内建指令 let,还有一个关于运算的指令expr,星号在这里也担任\"乘法\"的角色。不过在使用上得小心,他的前面必须加上escape 字元。 





** 次方运算 

两个星号在运算时代表 \"次方\" 的意思。 

let \"sus=2**3\"echo \"sus = $sus\" # sus = 8 





$ 钱号(dollar sign) 

变量替换(Variable Substitution)的代表符号。 

vrs=123echo \"vrs = $vrs\" # vrs = 123 

另外,在 Regular Expressions 里被定义为 \"行\" 的最末端 (end-of-line)。这个常用在grep、sed、awk 以及 vim(vi) 当中。 





${} 变量的正规表达式 

bash 对 ${} 定义了不少用法。以下是取自线上说明的表列 

   ${parameter:-word}   ${parameter:=word}   ${parameter:?word}   ${parameter:+word}   ${parameterffset}   ${parameterffset:length}   ${!prefix*}   ${#parameter}   ${parameter#word}   ${parameter##word}  
${parameter%word}   ${parameter%%word}   ${parameter/pattern/string}   ${parameter//pattern/string} 





$* 

$* 引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,然后依此类推。引用变量的代表方式如下: 

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}..... 

个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住。 

$* 则是代表所有引用变量的符号。使用时,得视情况加上双引号。 

echo \"$*\" 

还有一个与 $* 具有相同作用的符号,但效用与处理方式略为不同的符号。 





$@ 

$@ 与 $* 具有相同作用的符号,不过她们两者有一个不同点。 

符号 $* 将所有的引用变量视为一个整体。但符号 $@ 则仍旧保留每个引用变量的区段观念。 



$# 

这也是与引用变量相关的符号,她的作用是告诉你,引用变量的总数量是多少。 

echo \"$#\" 





$? 状态值 (status variable) 

一般来说,UNIX(linux) 系统的进程以执行系统调用exit()来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。 

一般指令程序倘若执行成功,其回传值为 0;失败为 1。 

tar cvfz dfbackup.tar.gz /home/user > /dev/nullecho\"$?\"$$ 

由于进程的ID是唯一的,所以在同一个时间,不可能有重复性的 PID。有时,script会需要产生临时文件,用来存放必要的资料。而此script亦有可能在同一时间被使用者们使用。在这种情况下,固定文件名在写法上就显的不可靠。唯有产生动态文件名,才能符合需要。符号$$或许可以符合这种需求。它代表当前shell 的 PID。 

echo \"$HOSTNAME, $USER, $MAIL\" > ftmp.$$ 

使用它来作为文件名的一部份,可以避免在同一时间,产生相同文件名的覆盖现象。 

ps: 基本上,系统会回收执行完毕的 PID,然后再次依需要分配使用。所以 script 即使临时文件是使用动态档名的写法,如果script 执行完毕后仍不加以清除,会产生其他问题。 



(   ) 指令群组 (command group) 

用括号将一串连续指令括起来,这种用法对 shell 来说,称为指令群组。如下面的例子:(cd ~ ; vcgh=`pwd` ;echo $vcgh),指令群组有一个特性,shell会以产生 subshell来执行这组指令。因此,在其中所定义的变数,仅作用于指令群组本身。我们来看个例子 

# cat ftmp-01#!/bin/basha=fsh(a=incg ; echo -e \"\\n $a \\n\")echo $a#./ftmp-01incgfsh 

除了上述的指令群组,括号也用在 array 变数的定义上;另外也应用在其他可能需要加上escape字元才能使用的场合,如运算式。 





(( )) 

这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 let指令要好许多。 

#!/bin/bash(( a = 10 ))echo -e \"inital value, a = $a\\n\"(( a++))echo \"after a++, a = $a\" 



{ } 大括号 (Block of code) 

有时候 script 当中会出现,大括号中会夹着一段或几段以\"分号\"做结尾的指令或变数设定。 

# cat ftmp-02#!/bin/basha=fsh{a=inbc ; echo -e \"\\n $a \\n\"}echo $a#./ftmp-02inbcinbc 

这种用法与上面介绍的指令群组非常相似,但有个不同点,它在当前的 shell 执行,不会产生 subshell。 

大括号也被运用在 \"函数\" 的功能上。广义地说,单纯只使用大括号时,作用就像是个没有指定名称的函数一般。因此,这样写 script也是相当好的一件事。尤其对输出输入的重导向上,这个做法可精简 script 的复杂度。 



此外,大括号还有另一种用法,如下 

{xx,yy,zz,...} 

这种大括号的组合,常用在字串的组合上,来看个例子 

mkdir {userA,userB,userC}-{home,bin,data} 

我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data,这几个目录。这组符号在适用性上相当广泛。能加以善用的话,回报是精简与效率。像下面的例子 

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} 

如果不是因为支援这种用法,我们得写几行重复几次呀! 





[   ] 中括号 

常出现在流程控制中,扮演括住判断式的作用。if [ \"$?\" != 0 ]thenecho \"Executes error\"exit1fi 

这个符号在正则表达式中担任类似 \"范围\" 或 \"集合\" 的角色 

rm -r 200[1234] 

上例,代表删除 2001, 2002, 2003, 2004 等目录的意思。 





[[ ]] 

这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与&& 逻辑等符号。 

#!/bin/bashread akif [[ $ak > 5 || $ak< 9 ]]thenecho $akfi 





|| 逻辑符号 

这个会时常看到,代表 or 逻辑的符号。 





&& 逻辑符号 

这个也会常看到,代表 and 逻辑的符号。 





& 后台工作 

单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。 

tar cvfz data.tar.gz data > /dev/null& 



\\<...\\> 单字边界 

这组符号在规则表达式中,被定义为\"边界\"的意思。譬如,当我们想找寻 the 这个单字时,如果我们用 

grep the FileA 

你将会发现,像 there 这类的单字,也会被当成是匹配的单字。因为 the 正巧是 there的一部份。如果我们要必免这种情况,就得加上 \"边界\" 的符号 

grep '\\' FileA 





+ 加号 (plus) 

在运算式中,她用来表示 \"加法\"。 

expr 1 + 2 + 3 

此外在规则表达式中,用来表示\"很多个\"的前面字元的意思。 

# grep '10\\+9' fileB109100910000910000931010009#这个符号在使用时,前面必须加上escape 字元。 





- 减号 (dash) 

在运算式中,她用来表示 \"减法\"。 

expr 10 - 2 

此外也是系统指令的选项符号。 

ls -expr 10 - 2 

在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表\"标准输入\"的意思。这是 GNU指令的共通选项。譬如下例 

tar xpvf - 

这里的 - 符号,既代表从标准输入读取资料。 

不过,在 cd 指令中则比较特别 

cd - 

这代表变更工作目录到\"上一次\"工作目录。 





% 除法 (Modulo) 

在运算式中,用来表示 \"除法\"。 

expr 10 % 2 

此外,也被运用在关于变量的规则表达式当中的下列 

${parameter%word}${parameter%%word} 

一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。 





= 等号 (Equals) 

常在设定变数时看到的符号。 

vara=123echo \" vara = $vara\" 

或者像是 PATH 的设定,甚至应用在运算或判断式等此类用途上。 





== 等号 (Equals) 

常在条件判断式中看到,代表 \"等于\" 的意思。 

if [ $vara == $varb ] 

...下略 



!= 不等于 

常在条件判断式中看到,代表 \"不等于\" 的意思。 

if [ $vara != $varb ] 

...下略 







这个符号在规则表达式中,代表行的 \"开头\" 位置,在[]中也与\"!\"(叹号)一样表示“非” 





输出/输入重导向 

> >>   <   <<   :>   &>   2&>   2<>>&   >&2  



文件描述符(File Descriptor),用一个数字(通常为0-9)来表示一个文件。 

常用的文件描述符如下: 

文件描述符     名称     常用缩写 默认值 

0        标准输入 stdin    键盘 

1        标准输出 stdout     屏幕 

2    标准错误输出   stderr     屏幕 

我们在简单地用<或>时,相当于使用 0< 或 1>(下面会详细介绍)。 

* cmd > file 

把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。 

* cmd >> file 

把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。 

* cmd < file 

使cmd命令从file读入 

* cmd << text 

从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。 

* cmd <<< word 

把word(而不是文件word)和後面的换行作为输入提供给cmd。 

* cmd <> file 

以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。 

* cmd >| file 

功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。 

: > filename    把文件\"filename\"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同). 

cmd >&n 把输出送到文件描述符n 

cmd m>&n 把输出 到文件符m的信息重定向到文件描述符n 

cmd >&- 关闭标准输出 

cmd <&n 输入来自文件描述符n 

cmd m<&n m来自文件描述各个n 

cmd <&- 关闭标准输入 

cmd <&n- 移动输入文件描述符n而非复制它。(需要解释) 

cmd >&n- 移动输出文件描述符 n而非复制它。(需要解释)

注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。

====================================================================================================================================

$( ) 与 ` ` (反引号)

在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的。

所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:

* 完成引号里的命令行,然后将其结果替换出来,再重组命令行。

例如:

[code]$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)[/code]

如此便可方便得到上一星期天的日期了… ^_^

用 $( ) 的理由:

1,   ` ` 很容易与 ' ' ( 单引号)搞混乱,尤其对初学者来说。

有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。

当然了,有经验的朋友还是一眼就能分辩两者。只是,若能更好的避免混乱,又何乐不为呢? ^_^

2, 在多层次的复合替换中,` ` 须要额外的跳脱( \` )处理,而 $( ) 则比较直观。例如:

这是错的:

[code]command1 `command2 `command3` `[/code]

原本的意图是要在 command2 `command3` 先将 command3 提换出来给 command 2 处理,

然后再将结果传给 command1 `command2 …` 来处理。

然而,真正的结果在命令行中却是分成了 `command2 ` 与 “ 两段。

正确的输入应该如下:

[code]command1 `command2 \`command3\` `[/code]

要不然,换成 $( ) 就没问题了:

[code]command1 $(command2 $(command3))[/code]

只要你喜欢,做多少层的替换都没问题啦~~~   ^_^

$( ) 的不足:

1. ` ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。

而 $( ) 并不见的每一种 shell 都能使用,我只能跟你说,若你用 bash2 的话,肯定没问题…   ^_^

${ } 用来作变量替换。

一般情况下,$var 与 ${var} 并没有啥不一样。

但是用 ${ } 会比较精确的界定变量名称的范围,比方说:

$ A=B

$ echo $AB

原本是打算先将 $A 的结果替换出来,然后再补一个 B 字母于其后,

但在命令行上,真正的结果却是只会提换变量名称为 AB 的值出来…

若使用 ${ } 就没问题了:

$ echo ${A}B

BB

不过,假如你只看到 ${ } 只能用来界定变量名称的话,那你就实在太小看 bash 了﹗

有兴趣的话,你可先参考一下 cu 本版的精华文章:

http://www.chinaunix.net/forum/viewtopic.php?t=201843

为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:

假设我们定义了一个变量为:

file=/dir1/dir2/dir3/my.file.txt

我们可以用 ${ } 分别替换获得不同的值:

${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt

${file#*.}:拿掉第一个 .  及其左边的字符串:file.txt

${file##*.}:拿掉最后一个 .  及其左边的字符串:txt

${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3

${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)

${file%.*}:拿掉最后一个 .  及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:拿掉第一个 .  及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:

[list]# 是去掉左边(在鉴盘上 # 在 $ 之左边)

% 是去掉右边(在鉴盘上 % 在 $ 之右边)

单一符号是最小匹配﹔两个符号是最大匹配。[/list]

${file:0:5}:提取最左边的 5 个字节:/dir1

${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2

我们也可以对变量值里的字符串作替换:

${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt

${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

利用 ${ } 还可针对不同的变量状态赋值(没设定、空值、非空值): 

${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理) 

${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作传回值。 (非空值时不作处理)

${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)

${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。 (没设定及空值时不作处理)

${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。 (空值及非空值时不作处理)

${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。 (非空值时不作处理)

${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。 (空值及非空值时不作处理)

${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理)

tips:

以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态.

一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连 null 也受影响.

还有哦,${#var} 可计算出变量值的长度:

${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节…

接下来,再为大家介稍一下 bash 的组数(array)处理方法。

一般而言,A="a b c def" 这样的变量只是将 $A 替换为一个单一的字符串,

但是改为 A=(a b c def) ,则是将 $A 定义为组数…

bash 的组数替换方法可参考如下方法:

${A[@]} 或 ${A[*]} 可得到 a b c def (全部组数)

${A[0]} 可得到 a (第一个组数),${A[1]} 则为第二个组数…

${#A[@]} 或 ${#A[*]} 可得到 4 (全部组数数量)

${#A[0]} 可得到 1 (即第一个组数(a)的长度),${#A[3]} 可得到 3 (第四个组数(def)的长度)

A[3]=xyz 则是将第四个组数重新定义为 xyz …

好了,最后为大家介绍 $(( )) 的用途吧:它是用来作整数运算的。

在 bash 中,$(( )) 的整数运算符号大致有这些:

+ - * / :分别为 "加、减、乘、除"。

% :余数运算

& | ^ !:分别为 "AND、OR、XOR、NOT" 运算。

例:

$ a=5; b=7; c=2

$ echo $(( a+b*c ))

19

$ echo $(( (a+b)/c ))

6

$ echo $(( (a*b)%c))

1

在 $(( )) 中的变量名称,可于其前面加 $ 符号来替换,也可以不用,如:

$(( $a + $b * $c)) 也可得到 19 的结果

此外,$(( )) 还可作不同进位(如二进制、八进位、十六进制)作运算呢,只是,输出结果皆为十进制而已:

echo $((16#2a)) 结果为 42 (16进位转十进制)

shell脚本中的一些特殊符号的更多相关文章

  1. 【shell脚本】$ 在shell脚本中的使用

    shell脚本中 '$' 与不同的符号搭配其表示的意义也会不同 特殊标志符 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数. 例如,第一个参数是$1,第二个 ...

  2. shell脚本中常见的一些特殊符号和作用详解

    这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下   在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...

  3. 在shell脚本中进行条件控制以及使用循环

    转载请标明:http://www.cnblogs.com/winifred-tang94/ if条件语句语法: if [ 条件表达式 ] then 代码 else 代码 fi 注意:在上面的if条件语 ...

  4. shell脚本中局部变量local

    shell脚本中局部变量 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是gl ...

  5. shell脚本中的整数测试

    shell脚本中的整数测试 author:headsen chen      2017-10-17   13:58:12 个人原创,转载请注明作者,出处,否则依法追究法律责任 1,test用法:tes ...

  6. Shell脚本中的逻辑判断、文件目录属性判断、if的特殊用法、case判断

    1.Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi格式2:if 条件; then 语句; else 语句; fi格式3:if …; then … ;elif …; then ...

  7. 数组-在Shell脚本中的基本使用介绍

    Shell脚本在运维工作中是极其重要的,而数组在shell脚本里的运用无论是在循环或运算方面都是非常实用的一个环节.下面是对shell脚本中数组方面一些操作在此进行记录,希望能帮助到有兴趣的朋友~1. ...

  8. shell脚本中判断上一个命令是否执行成功

    shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例 ...

  9. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

随机推荐

  1. vim 软件

    1. 安装vim     2. 使用vim        操作模式:         1. 一般模式 ,默认进入的一般模式,该模式不能编辑文档 ,只能查看            按 i(insert) ...

  2. np.where()

    numpy.where (condition[, x, y]) numpy.where()两种用法 1. np.where(condition, x, y) 满足条件(condition),输出x,不 ...

  3. Numpy中matrix()和array()的区别

    matrix() 和 array() 的区别,主要从以下方面说起: 1. 矩阵生成方式不同 import numpy as np a1 = np.array([[1, 2], [3, 4]]) b1 ...

  4. 3、kubeadm初始化Kubernetes集群

    同步时间 # ntpdate time.nist.gov k8s集群组成 k8s部署环境  https://kubernetes.io/docs/setup/independent/create-cl ...

  5. yum安装epel源

    国内yum源的安装(163,阿里云,epel)   国内yum源的安装(163,阿里云,epel) ----阿里云镜像源 1.备份 mv /etc/yum.repos.d/CentOS-Base.re ...

  6. body和document的梗

    http://bbs.zhinengshe.com/thread-1199-1-1.html 1. 在空白的页面加点击事件,是加在body上么 ? <!DOCTYPE html> < ...

  7. String与toString

    String与toString能将对象转为字符串: 类型 行为描述 Array 将 Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为分隔符进行拼接. Boolean ...

  8. 【HANA系列】SAP HANA SQL计算两个日期的差值

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL计算两个 ...

  9. XML模块,面向对象思想与类的定义

    今日内容 XML模块,面向对象思想,类的定义 1.XML模块 xml是一种可扩展的标记语言格式如下 使用 <> 作为标签格式 <tag style: '' color:read '' ...

  10. 【AMAD】beaker -- 用于session和缓存的WSGI中间件

    简介 动机 作用 个人评分 简介 Beaker1是一个web session和通用缓存库,并且包含一个WSGI中间件可以用于你的web应用. 动机 Beaker是基于MyghtyUtils2(一个古老 ...