LinuxSir.cn,穿越时空的Linuxsir!

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

问$#,$@

[复制链接]
发表于 2006-4-14 22:40:47 | 显示全部楼层 |阅读模式
#!/bin/sh
if [ $# -ge 1 ]; then
          for FILE in $@
          do
              exec 4<&0 < "$FILE"
              while read LINE; do echo $LINE ; done
              exec 0<&4 4<&-
          done
if

请问其中的 $#  ,$@ 都是代表什么啊?
exec 4<&0 < "$FILE"又有什么用呢?
发表于 2006-4-14 23:56:23 | 显示全部楼层
Post by kooder
#!/bin/sh
if [ $# -ge 1 ]; then
          for FILE in $@
          do
              exec 4<&0 < "$FILE"
              while read LINE; do echo $LINE ; done
              exec 0<&4 4<&-
          done
if

请问其中的 $#  ,$@ 都是代表什么啊?
exec 4<&0 < "$FILE"又有什么用呢?


1.$#代表命令行参数的数量
2.$@代表所有的命令行参数
  1. exec 4<&0 < "$FILE"
复制代码

表示复制file descriptor 0,也就是标准输入,产生一个新的file descriptor 4
同事将标准输入重定向为$FILE变量所指定的文件
你可以看到最后他用
  1. exec 0<&4 4<&-
复制代码

回复了原来的标准输入,并且关闭了4这个复制出来的file descriptor

如有错误,欢迎拍砖
回复 支持 反对

使用道具 举报

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

本版积分规则

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