LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: home_king

【Bash命令行处理】[详解]

[复制链接]
发表于 2006-10-1 03:13:04 | 显示全部楼层
Post by r2007
  1. r2007@www r2007 $ echo "\"                                                
  2. \
  3. r2007@www r2007 $ a=`echo "\"`                                            
  4. -bash: command substitution: line 1: unexpected EOF while looking for matching `"'
  5. -bash: command substitution: line 2: syntax error: unexpected end of file
  6. r2007@www r2007 $
复制代码

为什么a=`echo "\\"`提示错误,而echo "\\" 可以正常显示?
转义是在哪一步进行? 命令替换是否又进行一遍命令行处理?
谁能分析一下bash是如何对a=`echo "\\"`  这句进行扫描处理的,到哪一步出错停止的?
望通晓者告之,谢谢!



1.
$a=$(echo '\\')
$echo $a
\\
2.
$a=$(echo "\\")
$echo $a
\
3.
$a=`echo '\\'`
$echo $a
\
都用了命令替换而输出的结果不相同,究竟是转义在命令替换之前还是之后,还是$() ``2个替换命令导致输出的结果不一致?
回复 支持 反对

使用道具 举报

发表于 2006-12-12 11:37:20 | 显示全部楼层
好!正在学习中.....
回复 支持 反对

使用道具 举报

发表于 2007-1-6 00:50:16 | 显示全部楼层
type -all pwd
回复 支持 反对

使用道具 举报

发表于 2007-11-8 23:02:03 | 显示全部楼层
``的问题
因为``里面的`和\之类的符号要转义,比如两层``就是` \`\` `
要想输出一个\的话,可以用a=`echo "\\\\"`
这里面的4个\被``和里面的subshell转义了两遍
当然'\\'也可以,相当于外面的'\'
回复 支持 反对

使用道具 举报

发表于 2007-12-20 11:20:24 | 显示全部楼层
Post by home_king;573108
已添加三个改变命令行处理的命令:
command, built, enable

请重温顶帖,谢谢。:cool:




enable 和 alias 不是一样的吗?
回复 支持 反对

使用道具 举报

发表于 2007-12-20 11:21:22 | 显示全部楼层

一样哦

Post by home_king;573108
已添加三个改变命令行处理的命令:
command, built, enable

请重温顶帖,谢谢。:cool:




enable 和 alias 不是一样的吗?
回复 支持 反对

使用道具 举报

发表于 2008-10-21 20:12:57 | 显示全部楼层
占座收藏啊,好东西
回复 支持 反对

使用道具 举报

发表于 2009-2-19 21:27:47 | 显示全部楼层
37531679  请加入 linux 讨论群
回复 支持 反对

使用道具 举报

发表于 2009-7-15 10:40:30 | 显示全部楼层
学习了,顶下.
回复 支持 反对

使用道具 举报

发表于 2009-10-15 00:48:11 | 显示全部楼层
很详细!!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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