我有一个脚本,必须检查环境变量FILE是否已设置,以及它的路径是否确实存在。这就是我到目前为止用Google搜索的内容:
if env | grep -q ^FILE=
then
echo env variable is already exported
else
echo env variable was not exported
exit 1
fi
如果变量设置正确,哪个有效,但如果路径不存在,则在第一个if语句中遇到错误。我该如何修改语句以检查它?我的任务是创建路径,如果它不存在于脚本中。
答案 0 :(得分:2)
由于我们正在编写shell代码,因此环境变量只是普通变量。
if [ -f "$FILE" ]; then
echo env variable is already exported
else
echo env variable was not exported
fi
我不明白为什么在FILE
未使用上述代码导出时会出现错误,但是如果你要这样测试:if [ -f $FILE ]
(即没有引号)如果未设置FILE
,您将遇到错误。
答案 1 :(得分:2)
环境变量的不同之处在于它们位于环境块中,但除此之外,您可以将它们与bash
中的任何其他变量一样使用。对于所有shell都不是这样,csh
/ tcsh
(C-shell)对它们的处理方式不同。
有检查变量是否存在的测试(如果使用[[
则不需要引号):
[[ -z $FILE ]] && echo '$FILE empty'
[[ -n $FILE ]] || echo '$FILE empty'
来自bash 4:
[[ -v $FILE ]] || echo '$FILE not set'
顺便说一句,小心使用大写变量名称,它们可能会与shell使用的名称冲突。