当前位置: 技术问答>linux和unix
shell编程的几个小问题
来源: 互联网 发布时间:2016-12-11
本文导语: 1 declare ?? 2 expr 3 + 5 显示值是 8 b='expr 3 + 5' //??? echo $b 为什么b的值不是8 显示的是expr 3 + 5 3 test b -gt 10;echo $? 大于 test b -e...
1 declare ??
2 expr 3 + 5 显示值是 8
b='expr 3 + 5' //???
echo $b 为什么b的值不是8 显示的是expr 3 + 5
3
test b -gt 10;echo $? 大于
test b -eq 10;echo $? equalles
test b -le 10;echo $? 等于
test b -ne 10;echo $? 不等于
当给b赋值9时 结果都是显示2
4
test -n "aaaa"; echo $? //-n?? 用与不用一样 -n -z 什么意思?
test -z "" ;echo $? //??
5
d='cat te.sh' 把文件内容放到变量
echo $d //为什么显示的是cat te.sh 而不是里面的内容
--------------------------------------------------------
1 sbrk 与 brk 有什么不同
2 expr 3 + 5 显示值是 8
b='expr 3 + 5' //???
echo $b 为什么b的值不是8 显示的是expr 3 + 5
3
test b -gt 10;echo $? 大于
test b -eq 10;echo $? equalles
test b -le 10;echo $? 等于
test b -ne 10;echo $? 不等于
当给b赋值9时 结果都是显示2
4
test -n "aaaa"; echo $? //-n?? 用与不用一样 -n -z 什么意思?
test -z "" ;echo $? //??
5
d='cat te.sh' 把文件内容放到变量
echo $d //为什么显示的是cat te.sh 而不是里面的内容
--------------------------------------------------------
1 sbrk 与 brk 有什么不同
|
1.
http://archive.cnblogs.com/a/2024857/
2.
单引号改为反引号
3.
怎么逻辑表达式的返回值为2呢?不懂
4、
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
5.
和问题2一样
6.
没用过,等大神来
|
看第二题,expr 3 + 5 这是一个命令,用单引号括起来,他就是一个字符串了,所以echo $b得到的只能是字符串,而不能是11。你想,如果我随便定义b的值b='abc',你echo $b ,找你那样,是不是shell要执行abc这个命令,然后shell发现没有abc这个命令,于是报错?肯定不是这样了。
如果想要得到你的结果,可以用这样取得命令的结果并保持b=$(expr 3 + 5) 这样,b的值才是11,
还有一种方法,就是让shell再一次对命令进行解析,也就是#b='expr 3 + 5' ; eval $b
下面第五个同理,要么d=$(cat datafile) 再echo $d ;要么d='cat datafile'再eval $d
|
2 expr 3 + 5 显示值是 8
b='expr 3 + 5' //???
echo $b 为什么b的值不是8 显示的是expr 3 + 5
因为b的值是单引号包起来的字符串
b='expr 3 + 5' //???
echo $b 为什么b的值不是8 显示的是expr 3 + 5
因为b的值是单引号包起来的字符串
|
b=$(expr 3 + 5)这种形式就可以了
$ test 9 -gt 10;echo $?
1
$ test 9 -eq 10;echo $?
1
:~$ test 9 -lt 10;echo $?
0
$ test 9 -ne 10;echo $?
0
$ test 9 -gt 10;echo $?
1
$ test 9 -eq 10;echo $?
1
:~$ test 9 -lt 10;echo $?
0
$ test 9 -ne 10;echo $?
0
|
man test
-n STRING
the length of STRING is nonzero
STRING equivalent to -n STRING
-z STRING
the length of STRING is zero
-n STRING
the length of STRING is nonzero
STRING equivalent to -n STRING
-z STRING
the length of STRING is zero
|
注意单引号与反引号的区别
brk sets the end of the data segment to the value specified by end_data_segment, when that value is reasonable, the system does have enough memory and the process does not exceed its max data size (see setrlimit(2)).
sbrk increments the program's data space by increment bytes. sbrk isn't a system call, it is just a C library wrapper. Calling sbrk with an increment of 0 can be used to find the current location of the program break.
brk sets the end of the data segment to the value specified by end_data_segment, when that value is reasonable, the system does have enough memory and the process does not exceed its max data size (see setrlimit(2)).
sbrk increments the program's data space by increment bytes. sbrk isn't a system call, it is just a C library wrapper. Calling sbrk with an increment of 0 can be used to find the current location of the program break.
|
3
把b改成$b就行了
b是字符,而$b才是取的b的变量值。
把b改成$b就行了
b是字符,而$b才是取的b的变量值。
|
sbrk不是系统调用,是C库函数。系统调用通常提供一种最小界面,而库函数通常提供比较复杂的功能。
brk()是一个非常简单的系统调用,只是简单地改变mm_struct结构的成员变量brk的值。
brk()是一个非常简单的系统调用,只是简单地改变mm_struct结构的成员变量brk的值。
|
b=$(expr 3 + 5)这种形式就可以了
$ test 9 -gt 10;echo $?
1
$ test 9 -eq 10;echo $?
1
:~$ test 9 -lt 10;echo $?
0
$ test 9 -ne 10;echo $?
0
$ test 9 -gt 10;echo $?
1
$ test 9 -eq 10;echo $?
1
:~$ test 9 -lt 10;echo $?
0
$ test 9 -ne 10;echo $?
0
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。