$ pesta < ex1
Dapat membaca
contoh1program masuk dan dijalankan
Bentuk umumnya adalah:
$ nama skrip bash [parameter]
Misalnya:
$ bash ex2 /usr/meng /usr/zhang
Proses eksekusinya sama dengan cara sebelumnya, namun kelebihan dari cara ini adalah dapat memiliki parameter setelah nama script, sehingga meneruskan nilai parameter tersebut ke perintah-perintah di program, sehingga script Shell dapat menangani berbagai situasi, seperti halnya fungsi Saat memanggil, parameter aktual yang sesuai dapat diteruskan sesuai dengan masalah spesifik.
Jika Anda memulai dengan shell saat ini (dimulai dengan
·artinya) untuk menjalankan skrip Shell, Anda dapat menggunakan formulir sederhana berikut:
$ · ex3 [parameter]
Tetapkan izin skrip shell ke dapat dieksekusi, lalu jalankan langsung saat diminta.
Metode khusus:
$ chmod a+x ex4$./ex4
Persyaratan ini menentukan Shell spesifik yang menjalankan skrip di awal skrip Shell, misalnya
/bin/bash:
#!/bin/bash
Shell menerima perintah (nama skrip) yang dimasukkan oleh pengguna dan menganalisisnya. Jika file ditandai dapat dieksekusi tetapi bukan merupakan program yang dikompilasi, shell menganggapnya sebagai skrip shell. Shell akan membaca isinya, menafsirkannya dan mengeksekusinya. Jadi, dari sudut pandang pengguna, menjalankan skrip shell mirip dengan mengeksekusi file biasa yang dapat dieksekusi.
Oleh karena itu, skrip shell yang dikembangkan pengguna dapat berada di bawah direktori pada jalur pencarian perintah (biasanya
/tempat sampah,
/usr/bindll.), gunakan seperti perintah biasa. Dengan cara ini, Anda mengembangkan perintah baru Anda sendiri. Metode ini lebih nyaman jika Anda berencana menggunakan skrip shell yang telah disiapkan berulang kali.
Anda dapat menetapkan hasil eksekusi suatu perintah ke variabel. Ada dua bentuk substitusi perintah: yang pertama menggunakan backtick untuk mengutip perintah, bentuk umumnya adalah:
daftar perintah.
Misalnya: simpan nama path lengkap dari direktori kerja saat ini dalam variabel dir dan masukkan baris perintah berikut:
$ dir=`pwd`
Bentuk lainnya adalah:
$(daftar perintah). Baris perintah di atas juga dapat ditulis ulang menjadi:
$dir=$(pwd)
PestaHanya array satu dimensi yang disediakan, dan ukuran array tidak dibatasi. Mirip dengan bahasa C, subskrip elemen array diberi nomor mulai dari 0. Untuk mendapatkan elemen dalam array, gunakan subskrip. Subskrip dapat berupa bilangan bulat atau ekspresi aritmatika, dan nilainya harus lebih besar atau sama dengan 0. Pengguna dapat menggunakan pernyataan penugasan untuk menetapkan nilai ke variabel array.
Bentuk umum pemberian nilai pada elemen array adalah:
Nama array [subskrip] = nilai,Misalnya:
$ kota[0]=Beijing$ kota[1]=Shanghai$ kota[2]=Tianjin
Bisa juga digunakan
menyatakanPerintah tersebut secara eksplisit mendeklarasikan sebuah array, bentuk umumnya adalah:
$ menyatakan -nama array
Format umum untuk membaca nilai elemen array adalah:
${nama array[subskrip]},Misalnya:
$ echo ${city[0]}Beijing
Setiap elemen array dapat ditetapkan elemen demi elemen menggunakan metode di atas, atau dapat ditetapkan dalam kombinasi. Bentuk umum dari mendefinisikan array dan memberinya nilai awal adalah:
Nama array = (nilai 1 nilai 2...nilai n)
Setiap nilai dipisahkan oleh spasi. Misalnya:
$ A=(ini adalah contoh skrip shell)$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}ini contoh skrip$ echo ${ SEBUAH[8]}
Karena ada 7 nilai awal pada tabel nilai, maka
AJumlah elemennya juga 7.
SEBUAH[8]Melebihi array yang ditetapkan
Arentang, itu dianggap sebagai elemen baru. Karena tidak ada nilai yang ditetapkan sebelumnya, nilainya adalah string kosong.
Jika subskrip elemen array tidak diberikan, nama array mewakili elemen array dengan subskrip 0, seperti
kotasetara dengan
kota[0].
menggunakan
*atau
@Saat berlangganan, semua elemen dalam array akan diganti.
$ echo ${A[*]}ini adalah contoh skrip shell
$ gema ${#A[*]}7
Jika Anda ingin menulis Shell untuk mencari jumlah dua angka, bagaimana Anda bisa mengimplementasikannya? Untuk memperkenalkan penggunaan passing parameter, tulis skrip seperti ini:
$ kucing > jumlah tambahan=$1+$2echo $jumlah
Setelah menyimpan, jalankan:
$ chmod a+x ./tambahkan$ ./tambahkan 5 1015
Dapat dilihat bahwa 5 dan 10 diteruskan ke
$1Dan
$2, ini adalah urutan parameter preset shell sendiri. Faktanya, Anda juga dapat menentukan variabel terlebih dahulu dan kemudian meneruskannya.
Misalnya, ubah skrip di atas untuk mendapatkan:
misalkan jumlah=$X+$Yecho $jumlah
Jalankan lagi:
$ X=5 Y=10 ./tambah15
Ternyata hasil yang benar juga bisa diperoleh.
ekspor variabel lingkungan:
$ ekspor opid=Benar
Itu saja. Jika Anda ingin menerapkannya setelah masuk, Anda dapat menambahkannya langsung
/etc/profileatau
~/.bashrcDi dalam.
bisa lewat
membacaUntuk membaca nilai variabel, misalnya menunggu pengguna memasukkan nilai dan menampilkannya:
$ read -p Silakan masukkan nilai: input ; echo Anda memasukkan nilai: $input Silakan masukkan nilai: 21500 Anda memasukkan nilai: 21500
Beberapa variabel Shell yang penting tidak boleh diubah setelah penugasan, sehingga Anda dapat mengaturnya
hanya bisa dibaca:
$ Oracle_home=/usr/Oracle7/bin$ hanya baca Oracle_home
tata bahasa:
ekspresi tesMengembalikan nilai benar jika ekspresi benar, jika tidak, mengembalikan salah.
Pertama, simbol perbandingan umum yang digunakan dalam perbandingan numerik diberikan:
-misalnya =; -ne !=; -gt >; -ge >=; -lt <; -le <=
$ uji var1 -gt var2
Apakah file dapat dibaca, ditulis, dan dieksekusi bergantung pada apakah file tersebut merupakan file biasa dan apakah itu adalah direktori:
-r; -w; -x;
$ tes -r nama file
Panjang string adalah nol:
-z;-N,menyukai:
$ tes -z s1
jika string
s1Panjangnya nol dan mengembalikan nilai true.
setara
s1=s2; tidak setaras1!=s2
Ada cara lain untuk membandingkan string (Anda dapat membandingkannya dalam urutan leksikografis):
$ if [[ 'abcde' < 'abcdf' ]]; lalu echo ya, seperti yang diharapkan, ya, seperti yang diharapkan;
Operasi yang dapat dilakukan dengan perintah ini adalah:
Operasi aritmatika:
+ - * / %;Operasi logis:= ! < <= > >=
menyukai:
$i=5;ekspr $i+5
Selain itu,
SMadalah kalkulator baris perintah yang dapat melakukan beberapa perhitungan aritmatika.
jikaContoh perintah: Jika parameter pertama adalah nama file umum, maka cetak file dalam halaman; sebaliknya, jika itu adalah nama direktori, masukkan direktori dan cetak semua file dalam direktori, lalu prompt informasi yang relevan.
if test -f $1then pr $1>/dev/lp0elif test-d $1then (cd $1;pr *>/dev/lp0)else echo $1 bukan file atau direktorifi
kasusPerintah tersebut adalah perintah cabang multi-arah berdasarkan pencocokan pola. Berikut ini akan menentukan kumpulan perintah mana yang akan dieksekusi selanjutnya berdasarkan input keyboard pengguna.
while [ $reply!=y ] && [ $reply!=Y ] #Pernyataan loop yang akan kita pelajari di bawah do echo nApakah Anda ingin melanjutkan?(Y/N)c baca balasan #Baca casing keyboard $replay in ( y|Y) break;; #Keluar dari loop (n|N) echo nnMengakhirin exit 0;; *) echo nnSilakan jawab y atau n lanjutkan; #Kembali langsung ke loop dalam dan mulai untuk melanjutkan esacdone
tata bahasa:
sementara/sampai daftar perintah 1do daftar perintah 2selesai
Bedanya setelah yang pertama mengeksekusi perintah tabel 1, jika status keluarnya nol, maka jalankan
MengerjakanPerintah berikut daftar 2 kemudian akan kembali ke titik awal, dan setelah yang terakhir menjalankan perintah daftar 1, ia hanya akan melakukan operasi serupa jika status keluarnya bukan nol. Contoh yang sama seperti di atas.
tata bahasa:
untuk nama variabel dalam tabel string, lakukan tabel perintah selesai
Contoh:
FILE=test1.c myfile1.f pccn.hfor i di $FILEdo cd ./tmp cp $i $i.old echo $idone disalin
Sekarang mari kita lihat penggunaan fungsi di Shell. Mari kita lihat contohnya terlebih dahulu: tulis sebuah fungsi lalu panggil untuk ditampilkan
Halo Dunia!
$ cat > show# Definisi fungsi function show{ echo $1$2;}H=Halo,W=Dunia!# Panggil fungsi dan teruskan dua parameter H dan Wshow $H $W
Demo:
$ chmod 770 show$./showHalo, Dunia!
Apakah Anda melihat sesuatu yang mencurigakan?
$ tampilkan $H $W
Kita bisa langsung mengikuti nama fungsi dengan parameter sebenarnya.
Urutan parameter aktual sesuai dengan "parameter virtual"
$1,$2,$3…
Catatan: Jika Anda ingin meneruskan suatu parameter, apa yang harus Anda lakukan jika ada spasi di tengah parameter? Cobalah dulu.
untuk ditampilkan
Halo Dunia(Ada spasi di antara kedua kata tersebut)
fungsi pertunjukan{ echo $1}HW=Halo Pertunjukan Dunia $HW
Jika secara langsung
tampilkan $HW, pasti tidak mungkin, karena
$1Hanya diterima
Halo, jadi hasilnya hanya terlihat
Halo, alasannya adalah variabel string harus digunakan Berisi itu.
Jika Anda tertarik, teruslah belajar!
Ada banyak hal hebat yang menunggu Anda, seperti
memotong,
expr,
sed,
awkdll.