2014-11-03 99 views
0

我写了一个很简单的脚本echo $1传递一个明星参数shell脚本文件

print_star.sh内容是

echo $1 

现在调用此脚本./print_star *时,它会显示该文件夹的第一个文件。

如何能够将明星(*)传递给shell脚本?

PS。我试图简化它,但目的是传递一个完整的SQL查询(带星号)将结果导出到一个文件。

回答

1

加入引用:echo "$1"
你应该差不多总是引用shell脚本中的变量;不这样做可能会导致不可预知的结果(正如您所经历的那样)。

调用此脚本./print_star *

这也似乎是错误的,你应该做./print_star \*./print_star '*'防止*在你从调用它的shell扩展。

0

修改脚本添加"各地$1

[prompt] cat print_str.sh 
echo "$1" 

,并调用脚本*单引号括起来

./print_str.sh '*' 
0

最简单的解决方法是报价:

./print_star '*' 

./print_star \* 

如果你正在使用bash,你也可以这样做:

set -o noglob 
./print_star * 

或者

set -f 
./print_star * 

在任何一种最后的情况下,你可以用set -o globset +f

复位行为
相关问题