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}"'}'上述命令執(zhí)行結果如下圖所示:

說明:
- eval 命令會將后接命令中的參數先替換為對應的值,然后再進行最終的命令執(zhí)行操作;
- 在使用 eval 命令時,需要注意單引號''和雙引號""的區(qū)別。在上面的示例中,eval 先將雙引號中的變量進行了替換。
2 說明
在 Shell 腳本中嵌套使用 $ 符號時,需要特別謹慎小心,因為這種使用方式容易引起一些奇怪的錯誤。
例如,在下面的示例中,就會報錯文件不存在,但實際上文件是存在的,如下圖所示:

上圖中的報錯讓人費解,不過肯定是因為嵌套使用 $ 符號導致的,根據本文前面介紹的內容,此時通過 eval 命令修飾該條語句,問題就解決了,如下圖所示:

到此這篇關于Shell腳本中$符號的嵌套使用方法小結的文章就介紹到這了,更多相關Shell $符號嵌套使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
shell 腳本之用ab每隔30分鐘并發(fā)一次休息10分鐘
這篇文章給大家分享如何使用shll解決用ab每隔30分鐘并發(fā)一次休息10分鐘,需要的朋友可以參考下2019-11-11

