Linux: mengatur perintah untuk variabel lokal


9

Saya mencoba memahami variabel lokal / lingkungan dan mengekspor / mengatur perintah.

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

Tolong jelaskan mengapa echo $FILEMmengembalikan string kosong

Jawaban:


21

Anda bingung bashdengan csh.

Dalam bashseperti di Bourne-seperti shell, setadalah perintah untuk set pilihan (pengaturan konfigurasi shell seperti -f, -C, -o noclobber...) dan parameter posisi ( $1, $2...).

set FILEM="razrax"

Setel $1ke FILEM=razrax.

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

Sintaks untuk tugas variabel dalam cangkang mirip Bourne adalah:

VAR=value

(tidak ada ruang yang diizinkan di kedua sisi =).

kshdan beberapa shell mirip Bourne lainnya (mksh, pdksh, zsh) juga dapat menetapkan variabel array dengan set:

set -A array value1 value2

zsh, bash, yashDan versi yang lebih baru dari kshpenggunaan sintaks ini sebagai gantinya:

array=(value1 value2)

Sebaliknya, dalam cshatau tcsh, sintaksnya adalah:

set VAR = value
set array = (value1 value2)

(spasi di sekitar =opsional).

Dalam rc/ eskerang:

VAR = value
array = (value1 value2)

(spasi di sekitar =opsional).


Terima kasih atas jawaban yang bagus. Satu-satunya hal yang saya tidak mengerti adalah apa perbedaan opsi benweet dan variabel lokal "set adalah perintah untuk mengatur opsi"?
— iJava

@ iJava, set -Csetel -Copsi (sama dengan set -o noclobber). set fooditugaskan fooke $1(dan $#1, ( $2, $3tidak disetel jika sebelumnya ditetapkan)). Periksa manual shell Anda untuk detailnya.
— Stéphane Chazelas

1
Saya tidak mengerti opsi APA. Apakah opsi ini yang dikirimkan ke program seperti main (String [] args)? Atau apa? Di mana mereka digunakan?
— iJava

1
@ iJava, mereka adalah pengaturan yang mempengaruhi perilaku shell. Lagi, RTFM
— Stéphane Chazelas
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.