shell基础的几个问题

wklken 2011-07-11 03:47:09
1.
Linux中
$KEN=1111
$readonly KEN
接着不能KEN=新值,也不能unset KEN,该如何做?才能去掉这个变量?
就是想抹杀掉

2.
set和env关系是什么
设置变量export VN=sdfsa
二者均能看到

3.这个比较郁闷,不知道怎么回事
shell中条件测试的字符串比较
以下是我的操作结果
$KEN=”abc”
$[ -z $KEN]
$echo $?
1
$[ $KEN=”123” ]
$echo $?
0
TYPE="/dev/rmt1"
TYPE2="/dev/rmt2"
[ "$TYPE"="$TYPE2" ]
echo $?
0
[ "aaa"="aaa" ]
echo $?
0
[ "bbb"="aaa" ]
echo $?
0

为什么明明该出现1的时候都是0?
...全文
120 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wklken 2011-07-11
  • 打赏
  • 举报
回复
下班回家,明天结帖哈
wklken 2011-07-11
  • 打赏
  • 举报
回复
懂了
鄙视下自己,格式问题
=号两边给空格,就不会一直判断为真了

[ "aaa" = "bbb" ]
echo $?
1

格式问题,郁闷,不会报错的
freetstar 2011-07-11
  • 打赏
  • 举报
回复
字符串比较用 == 数字用-eq

o god。你google也一大堆啊
wklken 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lgxwqq111 的回复:]

-z 表示判断字符串长度为0

你这个明显不为0,当然返回错误。。囧,多man
[/Quote]

$[ $KEN=”123” ]
$echo $?
0
TYPE="/dev/rmt1"
TYPE2="/dev/rmt2"
[ "$TYPE"="$TYPE2" ]
echo $?
0

我的问题是为啥那个是1
但是下面这两个就是0?

初来乍到,书本不详细,到时想man,无处下手
freetstar 2011-07-11
  • 打赏
  • 举报
回复
-z 表示判断字符串长度为0

你这个明显不为0,当然返回错误。。囧,多man
freetstar 2011-07-11
  • 打赏
  • 举报
回复
if [ "aaa"="bbb" ]
干什么
wklken 2011-07-11
  • 打赏
  • 举报
回复
KEN="abc"
[ -z $KEN ]
echo $?
1

加空格了,又跑了一遍,还是1

另外怎么查看test结果 就是[ "aaa"="bbb" ] 成功还是失败了?
justkk 2011-07-11
  • 打赏
  • 举报
回复
2,env只能看到export出来的变量
set 还可以看到没有export的变量
louyong0571 2011-07-11
  • 打赏
  • 举报
回复
第一个,貌似只能logout再login
昵称很不好取 2011-07-11
  • 打赏
  • 举报
回复
额,注意[]内部需要空格
freetstar 2011-07-11
  • 打赏
  • 举报
回复
[ -z $KEN]

这明显是错的嘛。[] 里的字符要与[或者]有空格隔开的,这里错了,是语法错,所以命令执行错误,返回是1

不知道说的明白不
wklken 2011-07-11
  • 打赏
  • 举报
回复
晕倒....
那如何拿到test的检测结果呢?
为什么这个就输出1了
$[ -z $KEN]
$echo $?
1

这个应该也为1才对呀
[ "bbb"="aaa" ]
echo $?
0
freetstar 2011-07-11
  • 打赏
  • 举报
回复
1.
Linux中
$KEN=1111she
$readonly KEN
接着不能KEN=新值,也不能unset KEN,该如何做?才能去掉这个变量?
就是想抹杀掉
=========================================================
既然设置为readonly了,怎么还可能再设置为可写了,当初你的目的就是设置为只读的
就像c、c++里的只读变量,用const声明之后不可能再重新设置为可变得


2.
set和env关系是什么
设置变量export VN=sdfsa
二者均能看到

===============================================================
env会把set出来的变量给显示出来




3.这个比较郁闷,不知道怎么回事
shell中条件测试的字符串比较
以下是我的操作结果
$KEN=”abc”
$[ -z $KEN]
$echo $?
1
$[ $KEN=”123” ]
$echo $?
0
TYPE="/dev/rmt1"
TYPE2="/dev/rmt2"
[ "$TYPE"="$TYPE2" ]
echo $?
0
[ "aaa"="aaa" ]
echo $?
0
[ "bbb"="aaa" ]
echo $?
0

为什么明明该出现1的时候都是0?

================================
echo $?表示上一个命令的退出结果,成功为0,那些命令都执行成功了,所以是0

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧