LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 923|回复: 5

超级难的一个问题!!!shell

[复制链接]
发表于 2009-2-26 21:19:21 | 显示全部楼层 |阅读模式
问题1:
$ A=B C        # 空格键未被关掉,作为 IFS 处理。
$ C: command not found.
$ echo $A
        
为什么输出为空  虽然c没有被发现 但是也应该输出B才对的
是不是说  因为在输入C后 敲回车  编译器发现命令的格式不对 所以就没编译


问题2
root@recoverserver # A='B            ----单引号
root@recoverserver > C
root@recoverserver > '
root@recoverserver # echo $A         ----不加引号
B C
root@recoverserver # echo "$A"         -----双引号
B
C

root@recoverserver #
为什么在输出的时候加引号和不加引号 会有这种差别
root@recoverserver # A="B
root@recoverserver > C
root@recoverserver > "
root@recoverserver # echo $A
B C
root@recoverserver # echo "$A"
B
C

root@recoverserver #
 楼主| 发表于 2009-2-26 21:34:42 | 显示全部楼层
一个高人给的解释是这样子的
A=B C ;A将作为C的环境变量,而不是本shell的变量
不知道该怎么理解?  那位大哥 大姐 给否给讲解的稍微通俗些
回复 支持 反对

使用道具 举报

发表于 2009-2-26 22:18:07 | 显示全部楼层
举几个常见的例子楼主应该就明白了

LANG=C cp --help
LANG=zh_CN.UTF-8 cp --help

CFLAGS="-g -O0" ./configure

http_proxy=http://xxx.xxx.xxx.xxx:8080 w3m g.cn
回复 支持 反对

使用道具 举报

发表于 2009-2-26 23:43:59 | 显示全部楼层
  1. A=B C
复制代码

相当于
  1. export A=B; C; unset A;
复制代码


加了引号,linefeed就是linefeed,照样输出;
不加引号,linefeed是IFS的默认三个分词符号之一,此时你可以把它看成空格。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 18:57:26 | 显示全部楼层
Post by Jockey;1953315
  1. A=B C
复制代码

相当于
  1. export A=B; C; unset A;
复制代码


加了引号,linefeed就是linefeed,照样输出;
不加引号,linefeed是IFS的默认三个分词符号之一,此时你可以把它看成空格。


我是把他看成空格
可是这时候 为什么输出报错????
回复 支持 反对

使用道具 举报

发表于 2009-3-5 09:54:25 | 显示全部楼层
你上面的例子哪里报错了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表