Latest web development tutorials

parameter passing Shell

Kita bisa dalam pelaksanaan Shell script untuk melewatkan parameter ke script, script mengambil parameter dalamformat: $ n.n merupakan angka, 1 untuk pelaksanaan pertama dari parameter naskah, 2 untuk parameter kedua untuk mengeksekusi script, dan sebagainya ......

contoh

Contoh berikut kami melewati tiga parameter untuk script, dan output, di mana $ 0 adalah nama file untuk mengeksekusi:

#!/bin/bash
# author:本教程
# url:www.w3big.com

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

Mengatur hak akses executable untuk script dan menjalankan script, output adalah sebagai berikut:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

Selain itu, ada beberapa parameter untuk menangani karakter khusus:

penanganan parameter penjelasan
$ # Jumlah parameter yang dikirimkan ke script
$ * Dalam satu string menampilkan semua parameter yang dikirimkan ke script.
Seperti "$ *" dengan "" "kasus tertutup, bentuk" $ 1 $ 2 ... $ n "output dari semua parameter.
$$ Saat ini nomor proses ID dari script berjalan
$! Akhirnya, proses yang berjalan di ID latar belakang nomor
$ @ * $ Dengan sama, tetapi ketika Anda menggunakan tanda kutip, dan mengembalikan setiap parameter dalam tanda kutip.
Seperti "$ @" dengan "" "kasus tertutup, bentuk" $ 1 "" $ 2 "..." n $ "output dari semua parameter.
$ - Shell menampilkan pilihan saat menggunakan, dan mengatur perintah fungsi yang sama.
$? Menampilkan status keluar dari perintah terakhir. 0 menunjukkan tidak ada kesalahan, dan nilai lain menunjukkan kesalahan.
#!/bin/bash
# author:本教程
# url:www.w3big.com

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

Mengeksekusi script, output adalah sebagai berikut:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

$ * Dan $ @ perbedaan:

  • Titik yang sama: semua referensi untuk semua parameter.
  • Perbedaan: hanya tercermin dalam tanda kutip ganda. Misalkan script berjalan saat menulis tiga parameter 1,2,3 ,, "*" setara dengan "123" (melewatkan parameter), dan "@" adalah setara dengan "1", "2", " 3 "(melewati tiga parameter).
#!/bin/bash
# author:本教程
# url:www.w3big.com

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

Mengeksekusi script, output adalah sebagai berikut:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3