linux shell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > linux shell > Shell $符号嵌套使用

Shell脚本中$符号的嵌套使用方法小结

作者:liitdar

在编写Shell脚本时,通过嵌套使用$符号,间接获取变量或表达式的值的具体方法,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文主要介绍在编写 Shell 脚本时,通过嵌套使用 $ 符号,间接获取变量或表达式的值的具体方法。

先说结论,在 Shell 脚本中,可以通过使用 eval 命令来实现 $ 符号的嵌套使用。

Man 手册中对于 eval 命令的解释如下:

eval [arg ...]
    The args are read and concatenated together into a single command. This command is then read and executed by the shell, and its exit status is returned as the value of eval. If there are no args, or only null arguments, eval returns 0.

1 示例

下面通过一个示例来展示通过 eval 命令实现 $ 符号嵌套使用的方法。

现有两个变量:“l_stream_file_index”的值为“1”,“SOURCE_FILE_1”的值为“demo.mp4”,如下图所示:

此时,为了通过变量“l_stream_file_index”间接获取到“SOURCE_FILE_1”的值,就要嵌套使用 $ 符号,但是直接嵌套使用 $ 符号时会报错,如下图所示:

此时,就可以通过 eval 命令解决上述问题了。在本例中,使用 eval 命令的最终命令如下:

eval echo '${SOURCE_FILE_'"${l_stream_file_index}"'}'

上述命令执行结果如下图所示:

说明:

2 说明

在 Shell 脚本中嵌套使用 $ 符号时,需要特别谨慎小心,因为这种使用方式容易引起一些奇怪的错误。

例如,在下面的示例中,就会报错文件不存在,但实际上文件是存在的,如下图所示:

上图中的报错让人费解,不过肯定是因为嵌套使用 $ 符号导致的,根据本文前面介绍的内容,此时通过 eval 命令修饰该条语句,问题就解决了,如下图所示:

到此这篇关于Shell脚本中$符号的嵌套使用方法小结的文章就介绍到这了,更多相关Shell $符号嵌套使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文