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