simon_chan 发表于 2016-7-8 17:58:44

请教一个 shell 脚本小问题

#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 等于出另一个文件名.

zxcv8 发表于 2016-7-8 20:37:53

sh b.sh 1 2 '*'   

Rockyw 发表于 2016-7-8 22:42:47

shell将*理解为通匹符,*应该相当于按字母顺序第一个匹配的文件名,2楼那样可以防止这种情况

simon_chan 发表于 2016-7-9 01:00:12

zxcv8 发表于 2016-7-8 20:37
sh b.sh 1 2 '*'

用 sh b.sh 1 2 '*'测试了一下, 发觉 $3 输出的是当前路径的所有文件和文件夹, 还是不能显示 *.

simon_chan 发表于 2016-7-9 01:00:23

zxcv8 发表于 2016-7-8 20:37
sh b.sh 1 2 '*'

用 sh b.sh 1 2 '*'测试了一下, 发觉 $3 输出的是当前路径的所有文件和文件夹, 还是不能显示 *.

simon_chan 发表于 2016-7-9 01:00:23

zxcv8 发表于 2016-7-8 20:37
sh b.sh 1 2 '*'

用 sh b.sh 1 2 '*'测试了一下, 发觉 $3 输出的是当前路径的所有文件和文件夹, 还是不能显示 *.

godspeedyen 发表于 2016-10-21 11:04:41

b.sh的內容改成這樣:
#!/bin/sh

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

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

就可以輸出:1 2 *
页: [1]
查看完整版本: 请教一个 shell 脚本小问题