Linux
Bash:在變數中使用原始二進製文件作為執行檔?
我想創建一個包含二進制數據的變數,然後在命令中執行。例子:
#!/bin/bash var="$(cat /bin/sleep)" "$var" 9999
您不能執行這樣的變數,因為:
- 核心執行文件,
- shell 可以執行儲存在變數中的命令行,但它不能解釋二進制數據
- 將二進製文件的內容儲存在變數中可能效果不佳,因為文件中可能存在空字節(並且大多數 shell 的變數中不能有空字節)
- 即使您使用程序替換來獲取包含該變數內容的臨時文件,程序替換文件句柄也將無法執行
因此,您必須將內容儲存在文件中,使該文件可執行,希望不會因為空字節而失去任何內容,然後執行該文件。