Anda tidak menyebutkan shell apa yang Anda rencanakan untuk digunakan, jadi saya akan menganggap bash, meskipun ini adalah hal-hal yang cukup standar di seluruh shell.
File Argumen
Argumen dapat diakses melalui variabel $1
- $n
( $0
mengembalikan perintah yang digunakan untuk menjalankan program). Katakanlah saya memiliki skrip yang baru saja cat
keluar n jumlah file dengan pembatas di antaranya:
#!/usr/bin/env bash
#
# Parameters:
# 1: string delimiter between arguments 2-n
# 2-n: file(s) to cat out
for arg in ${@:2} # $@ is the array of arguments, ${@:2} slices it starting at 2.
do
cat $arg
echo $1
done
Dalam hal ini, kami memberikan nama file ke cat. Namun, jika Anda ingin mengubah data dalam file (tanpa menulis dan menulis ulang secara eksplisit), Anda juga bisa menyimpan konten file dalam variabel:
file_contents=$(cat $filename)
[...do some stuff...]
echo $file_contents >> $new_filename
Baca dari stdin
Sejauh membaca dari stdin, kebanyakan shell memiliki read
builtin yang cukup standar , meskipun ada perbedaan dalam cara prompt ditentukan (paling tidak).
The Bash Halaman builtin pria memiliki penjelasan singkat cantik read
, tapi aku lebih suka Bash Hacker halaman.
Secara sederhana:
read var_name
Beberapa variabel
Untuk mengatur beberapa variabel, cukup berikan beberapa nama parameter ke read
:
read var1 var2 var3
read
kemudian akan menempatkan satu kata dari stdin ke setiap variabel, membuang semua kata yang tersisa ke variabel terakhir.
λ read var1 var2 var3
thing1 thing2 thing3 thing4 thing5
λ echo $var1; echo $var2; echo $var3
thing1
thing2
thing3 thing4 thing5
Jika lebih sedikit kata yang dimasukkan daripada variabel, variabel sisa akan kosong (bahkan jika ditetapkan sebelumnya):
λ read var1 var2 var3
thing1 thing2
λ echo $var1; echo $var2; echo $var3
thing1
thing2
# Empty line
Anjuran
Saya -p
sering menggunakan flag untuk prompt:
read -p "Enter filename: " filename
Catatan: ZSH dan KSH (dan mungkin yang lain) menggunakan sintaks yang berbeda untuk prompt:
read "filename?Enter filename: " # Everything following the '?' is the prompt
Nilai dasar
Ini sebenarnya bukan read
tipuan, tapi saya sering menggunakannya bersama read
. Sebagai contoh:
read -p "Y/[N]: " reply
reply=${reply:-N}
Pada dasarnya, jika variabel (balasan) ada, kembalikan sendiri, tetapi jika kosong, kembalikan parameter berikut ("N").