Bash

如何通過讀取命令使用多個變數進行輸入?

  • July 30, 2018

我正在使用 GNU bash - 版本 4.2.10(1)。我想在 shell 腳本中使用單個**讀取命令讀取多個變數。**所以我嘗試如下:

echo " Enter P N R : "
read P N R

但它不起作用。它只要求 P 變數的單個值並返回提示。我用Google搜尋但沒有找到任何解決方案。

read, 不-r期望輸入的單詞由特殊參數的字元分隔$IFS(預設情況下為 SPC、TAB 和 NL,儘管read除非它以反斜杠結尾,否則 NL 不能計數),其中反斜杠可用於轉義分隔符或允許一行在下一個物理行上繼續(刪除反斜杠換行序列)。

因此,使用者必須在此處輸入 P、N、R 空格或製表符分隔的值,例如:

value_for_P value_for_N value_for_R

或者,如果值可以包含空格:

value\ for\ P value\ for\ N value for R

(這裡我們沒有費心為 R 轉義空格,因為第三個單詞之後的行的其餘部分無論如何都會在 R 中結束;儘管使用者仍然需要轉義尾隨空格)。

如果您希望使用者在 3 行上輸入值,則需要 3read次呼叫。然後,您希望-r避免反斜杠處理並使 IFS 為空:

IFS= read -r P
IFS= read -r N
IFS= read -r R

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