shell运算
在shell中,使用expr 算术表达式
就可以执行算术运算。
例如
expr 1 + 3
expr 2 - 1
expr 10 / 2
expr 10 % 3
expr 10 /* 2
echo `expr 1 + 2`
以上表达式有几点需要注意的:
- 操作符两侧需要加空格,是
10 / 2
,而不是10/2
\*
代表乘法,因为*
一般都当做通配符
echo 后面的算术运算需要包裹在 ` 中,而不能是普通的引号 ' " ,
echo "expr 6 + 3"
echo 'expr 6 + 3'
输出结果都是expr 6 + 3,仅仅是打印而已
只有echo `expr 6 + 3` 会执行计算,显示9
` 符号在键盘左上角,就是~所在的按键
退出状态
linux中使用echo $?
来检查程序执行的结果,即返回值,写C语言程序时,我们时常在main函数的最后一句写上return 0
来表示程序正常结束。
所以一般echo $?
的结果为0表示程序正常结束,而非0则表示各种不同的错误原因。
例如执行ls
后输出当前目录内容,在echo $?
,输出0则表示ls
成功执行。
Linux通配符
在Linux中经常需要使用到的通配符:
通配符 | 含义 | 例子 |
---|---|---|
* | 匹配一个或多个任何字符 | ls * 显示当前目录所有内容 |
? | 匹配单个字符 | ls a? 显示所有两个字符长度的文件,以a开头 |
[…] | 匹配扩号里包含的任意一个字符 | ls [abc]* 显示所有以a,b或者c开头的文件名 |
注意:
[…-…]表示在一定范围内的任意字符
例如[a-o]表示在字母表中a到o之间的任意字符,包含a,o
例如执行:ls /bin/[a-c]*
会显示所有以a,b或者c开头的所有内容
在shell中,!,^都表示否定
例如ls /bin/[!a-o]*
或者ls /bin/[^a-o]*
都表示任何不以a到o之间字符开头的内容,所以输出如下:
在一行中执行多个命令
在shell中如果需要在一行中执行多个指令需要在之间加上;
date;who
不能直接 date who