【发布时间】:2015-12-19 09:38:10
【问题描述】:
我正在编写一个使用 gnuplot 的简单图形脚本,并使用辅助函数来构造一个 .gscript 文件。
add_gscript() {
echo "->>"
echo $1
echo $1 >> plot.gscript
cat plot.gscript
}
但是在将以下参数传递给函数后
echo "--"
echo 'set xrange [0:$RANGE]'
echo "--"
add_gscript "set xrange [0:100]"
在 $RANGE 已预先定义的地方,我得到以下输出
--
set xrange [0:$RANGE]
--
->>
set xrange 1
set datafile separator ","
set term qt size 800,640
set size ratio .618
set xrange 1
bash 是否以某种方式将 [0:100] 评估为 1?
【问题讨论】:
-
总是 double-quote 变量引用使其值被视为 literals;如果不加引号,这些值(在大多数情况下)会受到 shell 扩展的影响,包括分词和路径名扩展。
[0:100]恰好是匹配当前目录中任何文件的有效通配模式。命名为0或:或1。 -
so
echo "$1"; echo "$1" >> plot.gscript和任何其他未引用的变量。祝你好运。