Shell腳本中$符號的嵌套使用方法小結(jié)
本文主要介紹在編寫 Shell 腳本時,通過嵌套使用 $ 符號,間接獲取變量或表達式的值的具體方法。
先說結(jié)論,在 Shell 腳本中,可以通過使用 eval 命令來實現(xiàn) $ 符號的嵌套使用。
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 命令實現(xiàn) $ 符號嵌套使用的方法。
現(xiàn)有兩個變量:“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í)行結(jié)果如下圖所示:
說明:
- eval 命令會將后接命令中的參數(shù)先替換為對應(yīng)的值,然后再進行最終的命令執(zhí)行操作;
- 在使用 eval 命令時,需要注意單引號''和雙引號""的區(qū)別。在上面的示例中,eval 先將雙引號中的變量進行了替換。
2 說明
在 Shell 腳本中嵌套使用 $ 符號時,需要特別謹(jǐn)慎小心,因為這種使用方式容易引起一些奇怪的錯誤。
例如,在下面的示例中,就會報錯文件不存在,但實際上文件是存在的,如下圖所示:
上圖中的報錯讓人費解,不過肯定是因為嵌套使用 $ 符號導(dǎo)致的,根據(jù)本文前面介紹的內(nèi)容,此時通過 eval 命令修飾該條語句,問題就解決了,如下圖所示:
到此這篇關(guān)于Shell腳本中$符號的嵌套使用方法小結(jié)的文章就介紹到這了,更多相關(guān)Shell $符號嵌套使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
學(xué)習(xí)shell腳本之前的基礎(chǔ)知識[圖文]
在學(xué)習(xí)shell腳本之前,需要你了解很多關(guān)于shell的知識,這些知識是編寫shell腳本的基礎(chǔ),所以希望你能夠熟練的掌握2013-03-03Linux Shell中curl和wget使用代理IP的方法教程
這篇文章主要給大家介紹了關(guān)于在Linux Shell中curl和wget使用代理IP的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08