Saya sedang belajar bash scripting dan menemukan ini di / usr / share / bash-completion saya, baris 305:
local cword words=()
Apa fungsinya? Semua tutorial online hanya dalam format
local var=value
Saya sedang belajar bash scripting dan menemukan ini di / usr / share / bash-completion saya, baris 305:
local cword words=()
Apa fungsinya? Semua tutorial online hanya dalam format
local var=value
Jawaban:
Meskipun saya suka jawaban yang diberikan oleh jordanm, saya pikir itu sama pentingnya untuk menunjukkan kepada Linux
pengguna yang kurang berpengalaman bagaimana mengatasi pertanyaan seperti itu sendiri.
Cara yang disarankan lebih cepat dan lebih fleksibel daripada mencari jawaban di halaman acak yang muncul di halaman hasil pencarian Google.
Pertama, semua perintah yang dapat dijalankan Bash
tanpa mengetikkan jalur eksplisit untuk itu seperti ./command
dapat dibagi menjadi dua kategori: Bash shell builtins
dan external commands
. Bash shell builtins
datang terinstal dengan Bash
dan merupakan bagian dari itu sementara external commands
bukan bagian dari Bash
. Ini penting karena Bash shell builtins
didokumentasikan di dalam man bash
dan dokumentasinya dapat juga dipanggil dengan help
perintah sementara external commands
biasanya didokumentasikan sendiri manpages
atau mengambil beberapa raja -h, --help
bendera. Untuk memeriksa apakah perintah adalah Bash shell builtin
atau external command
:
$ type local
local is a shell builtin
Ini akan menampilkan how command would be interpreted if used as a command name
(dari help type
). Di sini kita dapat melihat bahwa itu local
adalah a shell builtin
. Mari kita lihat contoh lain:
$ type vim
vim is /usr/bin/vim
Di sini kita dapat melihat bahwa vim
itu bukan shell builtin
perintah eksternal yang terletak di /usr/bin/vim
. Namun, kadang-kadang perintah yang sama dapat diinstal baik sebagai external command
dan shell builtin
sekaligus. Tambahkan -a
ke type
ke daftar semua kemungkinan, misalnya:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Di sini kita dapat melihat bahwa echo
keduanya adalah a shell builtin
dan an external command
. Namun, jika Anda baru saja mengetik echo
dan menekan Returna shell builtin
akan dipanggil karena muncul pertama pada daftar ini. Perhatikan bahwa semua versi ini echo
tidak harus sama. Sebagai contoh, pada sistem saya /usr/bin/echo
mengambil --help
flag sedangkan yang builtin
tidak.
Ok, sekarang ketika kita tahu itu local
adalah shell builtin mari kita cari tahu cara kerjanya:
$ help local
local: local [option] name[=value] ...
Define local variables.
Create a local variable called NAME, and give it VALUE. OPTION can
be any option accepted by `declare'.
Local variables can only be used within a function; they are visible
only to the function where they are defined and its children.
Exit Status:
Returns success unless an invalid option is supplied, an error occurs,
or the shell is not executing a function.
Perhatikan baris pertama: name[=value]
. Semuanya antara [
dan ]
adalah opsional . Ini adalah konvensi umum yang digunakan dalam banyak manpages
dan bentuk dokumentasi di *nix
dunia. Yang sedang berkata, perintah yang Anda tanyakan dalam pertanyaan Anda sepenuhnya sah. Pada gilirannya, ...
karakter berarti bahwa argumen sebelumnya dapat diulang. Anda juga dapat membaca tentang konvensi ini di beberapa versi man man
:
The following conventions apply to the SYNOPSIS section and can be used
as a guide in other sections.
bold text type exactly as shown.
italic text replace with appropriate argument.
[-abc] any or all arguments within [ ] are optional.
-a|-b options delimited by | cannot be used together.
argument ... argument is repeatable.
[expression] ... entire expression within [ ] is repeatable.
Jadi, pada akhirnya, saya harap sekarang Anda akan memiliki waktu yang lebih mudah untuk memahami bagaimana berbagai perintah Linux
bekerja.
local
?
man bash
. Setelah di sana, ketik /Arrays$
untuk melompat ke bagian array. (Trailing The $
setelah Arrays
ini untuk mencegah bersepeda melalui referensi dalam teks ke bagian.) Dari sana Anda dapat mengetik f
untuk maju halaman atau b
pergi ke belakang. Ketik q
untuk keluar dari halaman manual setelah selesai.
help
tanpa argumen akan mencantumkan semua bash bawaan jika Anda penasaran ingin melihat lebih banyak.
local
cukup mendeklarasikan variabel hanya memiliki ruang lingkup dalam fungsi yang saat ini ditentukan, sehingga lingkungan pelaksana utama tidak dapat "melihat" nilainya. Anda tidak dapat menggunakan di local
luar fungsi. Contoh
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
Output: Variabel non lokal
Jadi $onlyhere
tidak terlihat di luar ruang lingkup fungsi.
var=()
, tapi saya kira itu agak sulit untuk dipikirkan tanpa mengetahui nama apa yang Anda cari . ;)