灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2913回复:0

linux shell编程中的特殊符号

楼主#
更多 发布于:2013-02-03 15:48

linux shell编程中的特殊符号
 
 
 
一、井号 #
 
1、在脚本文件中对一行进行注释。
 
2、在引号和符号后不是注释,只是#号本身:
 
echo "12 # hehe"
 
echo '12 # hehe'
 
echo 12 # hehe
 
3、参数替代
 
echo $(PATH#*:)


4、进制数转换
 
echo $((16#a));将十六进制数a转换为十进制数表示出来
 
echo $((5#3));将5进制数3转换为十进制数表示出来
 
5、模式匹配
 
echo ${#string};获得变量string所含字符的个数,如果string是个数组,则获得数组第一个元素所含字符个数。


二、分号 ;
 
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、单引号 ”
 
单引号中的所有字母或符号都代表它本身


六、逗号 ,
 
逗号用于分开多个算术表达式,对每个表达式都进行计算,但仅仅返回最后一个表达式的值。
 
let "t = (a = 9,5+3)"#该表达式中,对a赋值为9,计算出来t为8
 
 
 
七、反斜杠
 
号表示后面的符号仅仅代表该符号本身,但只有一位有效。比如
 
a就和'a'一个效果
 
 
 
八、正斜杠 /
 
1、文件名分割符,如
 
/usr/locale/share/
 
2、除法符号
 
 
 
九、反引号 `
 
命令取代?
 
 
十、冒号 :
 
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、两个星号表示指数 **
  
 
十三、问号 ?
 
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号码。
 
 
十五、圆括号 ()
 
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

喜欢0 评分0
游客

返回顶部