您的位置:首页 > 运维架构 > Shell

【转载】linux shell编程中的特殊符号

2014-05-11 20:14 330 查看


【转载】linux shell编程中的特殊符号

一、井号 # 

1、在脚本文件中对一行进行注释。 

2、在引号和\符号后不是注释,只是#号本身: 

echo "12 # hehe" 

echo '12 # hehe' 

echo 12 \# hehe 

3、参数替代 

echo $(PATH#*:) 

  www.2cto.com  

4、进制数转换 

echo $((16#a));将十六进制数a转换为十进制数表示出来 

echo $((5#3));将5进制数3转换为十进制数表示出来 

5、模式匹配 

echo ${#string};获得变量string所含字符的个数,如果string是个数组,则获得数组第一个元素所含字符个数。 

  www.2cto.com  

二、分号 ; 

1、分割符,在同一行中用分号可以隔开两个命令: 

ls;cat hello 

2、在引号和\符号后不是分割符,只是;号本身。 

 

三、;; 

1、两个分号,作为case选项的终结符: 

case "$variable" in 

abc) echo "$variable = abc" ;; 

xyz) echo "$variable = xyz" ;; 

esac 

 

四、句号 . 

1、点开头的文件是隐藏文件,要用ls -a才能看到。 

2、一个点指代当前目录,两个点指代上级目录。 

 

五、引号 

1、双引号 "" 

双引号中的大多数字母或符号都代表它本身 

2、单引号 ” 

单引号中的所有字母或符号都代表它本身 

  www.2cto.com  

六、逗号 , 

逗号用于分开多个算术表达式,对每个表达式都进行计算,但仅仅返回最后一个表达式的值。 

let "t = (a = 9,5+3)"#该表达式中,对a赋值为9,计算出来t为8 

 

七、反斜杠 \ 

\号表示后面的符号仅仅代表该符号本身,但只有一位有效。比如 

\a就和'a'一个效果 

 

八、正斜杠 / 

1、文件名分割符,如 

/usr/locale/share/ 

2、除法符号 

 

九、反引号 ` 

命令取代? 

  www.2cto.com  

十、冒号 : 

1、空命令,返回值为0,和true命令一样,可以在做无限循环的条件。 

2、提醒后面有一个二进制命令需要执行 

: ${username = `whoami`}#如果没有:则该行会出错 

3、参数取代? 

: ${HOSTNAME?} 

4、与>重定向符号一起创建一个文件(如果没有),或者截断一个文件(该文件已存在),该文件的长度为0 

: > data.exe 和cat /dev/null > data.exe效果相同 

5、与>>重定向符号一起更新一个文件的访问及修改时间,如果没有该文件,则创建之。和touch功效相同 

注意,4、5两条都仅对规则文件起作用,对管道,软连接以及一些特殊文件都没有用 

6、域分割符 

如$PATH变量中间的冒号 

 

十一、感叹号 ! 

1、非号,把退出状态变成由0变成1,由等于变成不等 = ,!= 

2、间接变量参考? 

3、两个感叹号表示上一个命令 !! 

 

十二、星号 * 

1、通配符,可以在正则表达式中代替任何字符或者数字 

2、乘号 

3、两个星号表示指数 ** 

  www.2cto.com  

十三、问号 ? 

1、测试符号,用于条件测试? 

2、通配符,可以在正则表达式中代替一个字符或者数字 

 

十四、$ 

1、变量符号 

2、表示一行的终止 

3、${}变量取代 

4、$1,$2,$3等等,指从命令行向脚本输入的第一个,第二个,第三个参数。$0指脚本本身。 

5、$#,指从命令行向脚本输入的参数个数。 

6、$*,指从命令行向脚本输入的所有参数,但是看成一个词。 

7、$@,指从命令行向脚本输入的所有参数,但是每个参数是根据IFS变量分开的。 

比如:export IFS=':',再echo $PATH,得到的结果是:/usr/local/sbin /usr/sbin /sbin /usr/local/bin /usr/bin /bin /usr/games /usr/lib/apache-ant/bin /usr/lib/java/bin /usr/lib/java/jre/bin /usr/lib/qt/bin /usr/share/texmf/bin 

8、$?,退出状态变量。 

9、$$,进程的ID号码。 

  www.2cto.com  

十五、圆括号 () 

1、命令组 

(a = 123;echo $a) 

该命令组写了一个子脚本,子脚本中的变量对子脚本外的一切脚本均不可见。 

2、数组初始化 

array = (element1 element2 element3) 

 

十六、大括号 {} 

1、括号扩展?比如 

grep linux file*.{txt,htm*} 

在file2.txt,file1.htm,file1.html等文件中查找linux字符串 

2、代码块,作为子函数,不能用于终端中,子函数中的变量对其他脚本还是可见的。 

3、代码块中的函数可以进行输入输出重定向。 



read line1 

read line2 

} < /etc/fstab
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息