separate_arguments¶
將命令列參數解析為以分號分隔的列表。
separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>)
將以空格分隔的字串 <args>
解析為項目列表,並將此列表以分號分隔的標準形式儲存在 <variable>
中。
此函數旨在解析命令列參數。整個命令列必須以一個字串的形式傳遞到參數 <args>
中。
確切的解析規則取決於作業系統。它們由 <mode>
參數指定,該參數必須是以下關鍵字之一
UNIX_COMMAND
參數由未加引號的空格分隔。單引號和雙引號對都受到尊重。反斜線會跳脫下一個字面字元 (
\"
是"
);沒有特殊的跳脫字元 (\n
只是n
)。WINDOWS_COMMAND
Windows 命令列使用與執行時期程式庫在啟動時建構 argv 相同的語法進行解析。它通過未用雙引號括起來的空格分隔參數。反斜線是字面的,除非它們位於雙引號之前。有關詳細資訊,請參閱 MSDN 文章 Parsing C Command-Line Arguments。
NATIVE_COMMAND
在版本 3.9 中新增。
如果主機系統是 Windows,則以
WINDOWS_COMMAND
模式進行。否則,以UNIX_COMMAND
模式進行。PROGRAM
在版本 3.19 中新增。
<args>
中的第一個項目被假定為可執行檔,並將在系統搜尋路徑中搜尋或保留為完整路徑。如果找不到,<variable>
將為空。否則,<variable>
是一個包含 2 個元素的列表程式的絕對路徑
字串
<args>
中存在的任何命令列參數
例如
separate_arguments (out UNIX_COMMAND PROGRAM "cc -c main.c")
列表的第一個元素:
/path/to/cc
列表的第二個元素:
" -c main.c"
SEPARATE_ARGS
當指定
PROGRAM
選項的此子選項時,命令列參數也將被拆分並儲存在<variable>
中。例如
separate_arguments (out UNIX_COMMAND PROGRAM SEPARATE_ARGS "cc -c main.c")
out
的內容將是:/path/to/cc;-c;main.c
separate_arguments(<var>)
將 <var>
的值轉換為以分號分隔的列表。所有空格都將被替換為 ';'。這有助於產生命令列。