如何在shell脚本中传递多个变量

时间:2015-10-29 14:48:39

标签: bash shell

我有一个shell脚本,我正在尝试使用多个变量写入文件,但其中一个被忽略。

#!/bin/bash

dir=/folder
name=bob
date=`date +%Y`

command > $dir/$name_$date.ext

$name被忽略了。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您是否注意到_被“忽略”了?这是一个很大的提示 如果您使用set -u,则会看到以下内容:

-bash: name_: unbound variable

bash解析它的方式,下划线是变量名的一部分。

有几种方法可以解决这个问题 最干净的是${var}构造,它将变量名称与其周围环境分开 您还可以通过各种方式使用引号来强制进行正确的解析,例如:"$dir/$name""_$date.ext"

如果您的变量可能包含空格(现在或将来),请使用单词的引用。

command >"$dir/${name}_$date.ext"
command >"${dir}/${name}_${date}.ext"

这两个都很好,只需选择一种风格并坚持下去。