请注意:关于如何在这个网站上testing一个shellvariables有很多问题。 这个问题是关于testing任何未定义variables的脚本。
你可以在bash中使用未定义的variables而不会在执行时看到任何错误:
#!/bin/bash echo ${UNDEF_file} ls -l ${UNDEF_file} exit 0
我发现这很容易出错。 如果我想在大脚本中更改variables的名称,或者删除该variables,则所有以前的陈旧引用都将导致脚本中的错误。 有时候这对于deBUGging并不明显,或者你发现什么时候太迟了。
为什么这是允许的? 有没有办法标记未定义的variables?
在linux和/或python中生成吉他和弦的最简单的方法
AWK中删除空格
使用awk获取子string
打击密码并打开pipe道不工作
获取创builddate大于某个datelinux的文件列表
通过按ENTER键或ESC键在bash中创build中断
bash脚本ssh到一个盒子,让我到一个python shell
linux shell将可变参数附加到命令中
如何在脚本中使用密码从shell脚本login到用户帐户?
在bash脚本中使用以下sed行的含义
您可以使用:
set -u
在脚本开始时使用未定义的变量时会引发错误。
-u
在执行参数扩展时,请将未设置的变量和参数(除特殊参数“@”和“*”之外)作为错误处理。 如果尝试在未设置的变量或参数上进行扩展,则shell将输出错误消息,如果不是交互式,则会以非零状态退出。
set -u是更普通的选项,但是正如其他答案的评论所指出的那样,编写惯用的shell脚本和set -u是有问题的。 另一种方法是创建参数扩展,当没有设置特定的变量时会产生错误。
$ echo $foo $ echo $? 0 $ echo "${foo?:no foo for yoo}" bash: foo: :no foo for yoo $ echo $? 1
这个错误会导致一个非交互式的shell退出。 这给你一个快速的方法来保证一个错误条件不会允许控制流继续一个未定义的值。 该规范并不要求交互式shell退出,但值得注意的是,即使在交互式shell中,如果在函数中发生此错误,bash将从函数调用中返回。
总结以上是内存溢出为你收集整理的如何让bash把未定义的variables视为错误?全部内容,希望文章能够帮你解决如何让bash把未定义的variables视为错误?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)