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.