我写了一个非常简单的脚本echo $1
print_star.sh
的内容是
echo $1
现在,当调用此脚本./print_star *
时,它会显示该文件夹的第一个文件。
如何将星号(*
)传递给shell脚本?
PS。我试图使其简单,但目的是传递一个完整的SQL查询(使用星号)将结果导出到文件。
答案 0 :(得分:1)
添加引号:echo "$1"
。
你应该几乎总是在shell脚本中引用变量;如果不这样做会导致不可预测的结果(正如您所经历的那样)。
调用此脚本./print_star *
这似乎也是错误的,您应该./print_star \*
或./print_star '*'
来阻止*
在您调用它的shell中展开。
答案 1 :(得分:0)
修改脚本以在"
$1
[prompt] cat print_str.sh
echo "$1"
并使用单引号
中的*
调用脚本
./print_str.sh '*'
答案 2 :(得分:0)
最简单的解决方案是引用:
./print_star '*'
或
./print_star \*
如果你正在使用bash,你也可以这样做:
set -o noglob
./print_star *
或者
set -f
./print_star *
在最后一种情况下,您可以使用set -o glob
或set +f
重置行为