$ 0 $ 1 $ # $ @ $ * $? Significado no Linux

1. $ 0, $ 1, $ 2, ..., $ n

$ 0 : este ponto especial indica o nome do próprio comando.
$ 1  indica o primeiro parâmetro.
$ 2 : indica o segundo parâmetro.
$ N : indica o enésimo parâmetro.

[root@localhost shell]# cat test01.sh 
echo $0
echo $1
echo $2
[root@localhost shell]# ./test01.sh Hello World
./test01.sh
Hello
World
[root@localhost shell]# bash test01.sh Hello World
test01.sh
Hello
World

Dois, $ #

$ # : Representa o número real de parâmetros

[root@localhost shell]# cat test02.sh 
echo "length is " $#
[root@localhost shell]#bash test02.sh 1 2 aa bb
length is  4

Três, $$

$$ : representa o pid do processo atual

[root@localhost shell]# cat test03.sh 
echo "my pid is " $$
[root@localhost shell]# bash test03.sh 
my pid is  47282
[root@localhost shell]# echo $$
46946

Quatro, $?

$ ?: Indica o status de saída da execução do comando anterior ( 0 significa nenhum erro, outro significa que há um erro )

[root@localhost shell]# cat test.sh 
exit 66 
[root@localhost shell]# ./test.sh 
[root@localhost shell]# echo $?
66

Cinco, $!

$ !: Representa o pid do programa de execução em segundo plano mais recente

[root@localhost shell]# sleep 60 &
[1] 47395
[root@localhost shell]# sleep 70 &
[2] 47396
[root@localhost shell]# echo $!
47396

Seis, outro

$
-Lista de sinalizadores definidos com o comando Set.
$ * Lista de 
todos os parâmetros. Se "$ *" estiver entre "" ", todos os parâmetros serão exibidos na forma de" $ 1 $ 2… $ n ". 
$ @
All lista de parâmetros. Se "$ @" estiver entre "" ", todos os parâmetros serão exibidos na forma de" $ 1 "" $ 2 "…" $ n ". 

A diferença entre $ * e $ @:

  • O mesmo ponto: todos os parâmetros estão entre aspas.
  • Diferença: refletida apenas em aspas duplas. Supondo que três parâmetros 1, 2, 3 são escritos quando o script está em execução, "*" é equivalente a "1 2 3" (um parâmetro é passado) e "@" é equivalente a "1" "2" "3 "(Três parâmetros são passados).

Sete, resumo

vim test.sh

#!/bin/sh 
echo "number:$#" 
echo "scname:$0" 
echo "first :$1" 
echo "second:$2" 
echo '     -----$*'
for i in "$*"; do
    echo $i
    done

echo '     -----$@'
for i in "$@"; do
    echo $i
    done
echo "PID:$$"

bash test.sh aa bb cc

Link de referência: https://www.runoob.com/linux/linux-shell-passing-arguments.html

 

Acho que você gosta

Origin blog.csdn.net/l_liangkk/article/details/105649018
Recomendado
Clasificación