Bash

如何用 echo 列印出每個命令參數?

  • July 5, 2019

根據這個答案

一個命令被分割成一個名為參數的字元串數組。參數 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”)

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