Bash
如何用 echo 列印出每個命令參數?
根據這個答案…
一個命令被分割成一個名為參數的字元串數組。參數 0(通常)是命令名稱,參數 1,命令後面的第一個元素,依此類推。
$ ls -la /tmp /var/tmp arg0 = ls arg1 = -la arg2 = /tmp arg3 = /var/tmp
是否可以列印出每個參數……讓我們用迴聲說。
我一直在使用
echo $@
並echo $0 $1 $2 $3
在執行ls -la /tmp /var/tmp
命令後立即使用,但並沒有真正起作用。我也試過這個,
> /dev/null
但效果不佳。(我得到與下面完全相同的輸出)user@linux:~$ ls -la /tmp /var/tmp > /dev/null user@linux:~$ echo $@ user@linux:~$ user@linux:~$ ls -la /tmp /var/tmp > /dev/null user@linux:~$ echo $0 bash user@linux:~$ user@linux:~$ ls -la /tmp /var/tmp > /dev/null user@linux:~$ echo $1 user@linux:~$ user@linux:~$ ls -la /tmp /var/tmp > /dev/null user@linux:~$ echo $0 $1 $2 $3 bash user@linux:~$
期望的輸出
我希望在執行後在我的終端螢幕上看到以下輸出
ls -la /tmp /var/tmp
輸入
ls -la /tmp /var/tmp
輸出
arg0 = ls arg1 = -la arg2 = /tmp arg3 = /var/tmp
echo $0 在您的範例中確實輸出了“bash”。這是真的,因為當你在 shell 中時 bash 正在執行。
您要訪問的參數將提供給 command
ls
。當它返回並且您的提示時,參數就消失了。創建包含該行的文件(“腳本”)後
echo $0 $1 $2
並通過採購來呼叫它:
. myecho.cmd a b c d
…你得到:
bash a b
使其成為執行檔後(將 #! 第一行、chmod、cp 添加到路徑目錄),您可以直接呼叫它:
myecho.cmd a b c d
現在 $0 是新命令的名稱:
/usr/local/bin/myecho.cmd a b
(我稱它為 .cmd 只是為了讓它突出。只是不要稱它為“echo”)