设为首页收藏本站language 语言切换
查看: 1481|回复: 6
收起左侧

请教一个 shell 脚本小问题

[复制链接]
发表于 2016-7-8 17:58:44 | 显示全部楼层 |阅读模式
#b.sh
echo $1
echo $2
echo $3

sh b.sh 1 2 *     
#结果:
1
2
anaconda-ks.cfg

原本设想 $3 会是 *, 不料却输出 anaconda-ks.cfg, 百思不得其解, 请问问题是哪里? PS: b.sh 所在路径的确有 anaconda-ks.cfg, 把 anaconda-ks.cfg 删了再运行脚本 $3 等于出另一个文件名.
发表于 2016-7-8 20:37:53 | 显示全部楼层
sh b.sh 1 2 '*'   
沙发 2016-7-8 20:37:53 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-7-8 22:42:47 | 显示全部楼层
shell将*理解为通匹符,*应该相当于按字母顺序第一个匹配的文件名,2楼那样可以防止这种情况
板凳 2016-7-8 22:42:47 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-9 01:00:12 | 显示全部楼层

用 sh b.sh 1 2 '*'  测试了一下, 发觉 $3 输出的是当前路径的所有文件和文件夹, 还是不能显示 *.
地板 2016-7-9 01:00:12 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-9 01:00:23 | 显示全部楼层

用 sh b.sh 1 2 '*'  测试了一下, 发觉 $3 输出的是当前路径的所有文件和文件夹, 还是不能显示 *.
5# 2016-7-9 01:00:23 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-9 01:00:23 | 显示全部楼层

用 sh b.sh 1 2 '*'  测试了一下, 发觉 $3 输出的是当前路径的所有文件和文件夹, 还是不能显示 *.
6# 2016-7-9 01:00:23 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-10-21 11:04:41 | 显示全部楼层
b.sh的內容改成這樣:
#!/bin/sh

echo "$1"
echo "$2"
echo "$3"

然後再使用
sh b.sh 1 2 '*'

就可以輸出:1 2 *
7# 2016-10-21 11:04:41 回复 收起回复
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-3 21:56 , Processed in 0.058146 second(s), 13 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

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