将*识别为unix中的命令

时间:2016-12-10 10:21:55

标签: bash unix

通过" *"传递一些争论char,我的shell认出来了 作为" ls myfolder"命令,所以打印到stdout这个命令的结果。

有什么方法可以解决这个问题吗?

  1 #!/bin/bash
  2
  3 if [ $# -lt 3 ]; then
  4 echo "Some arguments are missing"
  5 fi
  6
  7 #passing "*" as argument 
  8 echo $2
  9 # the result is file1.txt file2.txt...and more..

3 个答案:

答案 0 :(得分:1)

Bash在调用脚本之前扩展*,即$2 var将填充该目录中的所有内容。

与调用相同:

./script.sh with every file listed separated by spaces as arguments

如果你想要一个*作为var,请像这样调用脚本:

./script.sh \*

答案 1 :(得分:0)

将脚本调用为

./script \*

./script '*'

去掉与*相关的特殊含义,即防止全局化。

答案 2 :(得分:0)

如果不引用它们,参数扩展会进行路径名扩展。

InfluxDB 0.9.x