Bash

為什麼在這個函式定義和命令行中需要這些特殊的分號?

  • May 14, 2020

我正在準備 LPIC1,考試 102。這個問題出現在我面前,我完全空白。我第一次參加測驗時就知道了,現在一個半月後,我的腦海裡全都模糊了。

做什麼

   function a { echo $1; } ; a a b c   

輸出? A.一個

B. abc

計程車

D. aabc

我試圖通過創建一個名為“腳本”的文件來重現此功能:

function a { echo $1;
};
a a b c

保存它,給它執行權限然後試一試:

$ bash script
a
$ 

所以正確答案是A,但為什麼呢?有必要放一個;after$1嗎?第二個;是為了什麼?有人可以解釋一下這個腳本的語法嗎?

這些命令應該在命令行上執行,例如:

function a { echo $1; } ; a a b c

第二個分號將命令列表分隔為

function a { echo $1; }

a a b c

  • 第一個命令將創建一個名為“a”的函式,它將回顯第一個位置參數。由於沒有換行符,因此需要

使用分號來結束函式內的命令列表。 (另見:-> 複合命令 -> { list; } )echo $1
man bash

  • 第二個命令a a b c將呼叫該函式(fist a)並將“ab c”作為位置參數傳遞給該函式。

由於該函式只回顯第一個位置參數,因此正確答案是“A.”。

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