Linux

Bash:在變數中使用原始二進製文件作為執行檔?

  • November 18, 2018

我想創建一個包含二進制數據的變數,然後在命令中執行。例子:

#!/bin/bash
var="$(cat /bin/sleep)"
"$var" 9999

您不能執行這樣的變數,因為:

  • 核心執行文件,
  • shell 可以執行儲存在變數中的命令行,但它不能解釋二進制數據
  • 將二進製文件的內容儲存在變數中可能效果不佳,因為文件中可能存在空字節(並且大多數 shell 的變數中不能有空字節)
  • 即使您使用程序替換來獲取包含該變數內容的臨時文件,程序替換文件句柄也將無法執行

因此,您必須將內容儲存在文件中,使該文件可執行,希望不會因為空字節而失去任何內容,然後執行該文件。

引用自:https://unix.stackexchange.com/questions/482431