如何用 echo 打印出每个命令参数?

如何用 echo 打印出每个命令参数?

根据这个答案...

命令被拆分为名为参数的字符串数组。参数 0(通常)是命令名称,参数 1 是命令后面的第一个元素,依此类推。

$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

是否可以打印出每个参数……让我们用 echo 来表示。

我在执行命令后一直在使用echo $@and ,但并没有真正起作用。echo $0 $1 $2 $3ls -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

答案1

echo $0 在您的示例中确实输出了“bash”。这是真的,因为当您在 shell 中时 bash 正在运行。

您想要访问的参数已提供给命令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”)

相关内容