我写了一个脚本来获取 bash shell 片段。shell 片段应该是一种配置文件,基本上是一堆 bash 变量。
这里的问题是,当某些字符串变量包含应转义的字符时。由于它们没有转义,脚本稍后可能会失败或出现意外行为。
目前,我的脚本正在验证 shell 片段(配置文件)bash 语法(bash -n
),但如果需要转义任何字符,则不会检测到。
因此,我希望自动转义敏感字符,或者至少检测它们,以便我可以显示错误并退出。
知道如何实现这个目标吗?
答案1
变量$?
是你的朋友。它包含最近执行的命令的返回状态,包括 bash 内置函数。
$ /bin/false
$ echo $?
1
$ /bin/true
$ echo $?
0
$ echo 'FOO="bar' > atest
$ . atest
-bash: atest: line 1: unexpected EOF while looking for matching `"'
-bash: atest: line 2: syntax error: unexpected end of file
$ echo $?
1
请记住,它只返回最最近的命令。如果您需要在执行错误测试之前运行其他命令,则需要立即将其分配给变量,如下所示:
$ /bin/false
$ MYRETURN=$?
$ /bin/true
$ echo $?
0
$ echo $MYRETURN
1