Bash自动将[0:100]替换为1

时间:2015-12-18 02:46:11

标签: bash scripting

我正在编写一个使用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?

1 个答案:

答案 0 :(得分:1)

在对问题的评论中准确描述了修正:

  

始终双引号变量引用,将其值视为 literals ;在没有引用的情况下,值(在大多数情况下)受shell扩展的影响,包括单词拆分和路径名扩展。 [0:100]碰巧是一个有效的globbing模式,匹配当前目录中的任何文件。命名为0:1。 - mklement0

     

所以echo "$1"; echo "$1" >> plot.gscript以及任何其他未加引号的变种。祝好运。 - shellter

双引号变量确实解决了我的问题。谢谢!