我写了一个很简单的脚本echo $1
传递一个明星参数shell脚本文件
的print_star.sh
内容是
echo $1
现在调用此脚本./print_star *
时,它会显示该文件夹的第一个文件。
如何能够将明星(*
)传递给shell脚本?
PS。我试图简化它,但目的是传递一个完整的SQL查询(带星号)将结果导出到一个文件。
我写了一个很简单的脚本echo $1
传递一个明星参数shell脚本文件
的print_star.sh
内容是
echo $1
现在调用此脚本./print_star *
时,它会显示该文件夹的第一个文件。
如何能够将明星(*
)传递给shell脚本?
PS。我试图简化它,但目的是传递一个完整的SQL查询(带星号)将结果导出到一个文件。
加入引用:echo "$1"
。
你应该差不多总是引用shell脚本中的变量;不这样做可能会导致不可预知的结果(正如您所经历的那样)。
调用此脚本./print_star *
这也似乎是错误的,你应该做./print_star \*
或./print_star '*'
防止*
在你从调用它的shell扩展。
修改脚本添加"
各地$1
[prompt] cat print_str.sh
echo "$1"
,并调用脚本*
单引号括起来
./print_str.sh '*'
最简单的解决方法是报价:
./print_star '*'
或
./print_star \*
如果你正在使用bash,你也可以这样做:
set -o noglob
./print_star *
或者
set -f
./print_star *
在任何一种最后的情况下,你可以用set -o glob
或set +f