Saya pikir saya memiliki pemikiran besar. Saya harapkan
env foo=bar echo $foo
... untuk mencetak bar
, tapi saya malah mendapat baris kosong. Wat.
Hal yang sama terjadi jika saya menggunakan sintaks bash:
foo=bar echo $foo
Saya pikir saya memiliki pemikiran besar. Saya harapkan
env foo=bar echo $foo
... untuk mencetak bar
, tapi saya malah mendapat baris kosong. Wat.
Hal yang sama terjadi jika saya menggunakan sintaks bash:
foo=bar echo $foo
Pertanyaan serupa dijawab baru-baru ini : simbol dievaluasi dalam baris sebelum simbol didefinisikan dalam baris ini, sehingga perlu untuk membagi definisi dan penggunaan simbol untuk memisahkan garis.
Diminta oleh komentar, Anda bisa melakukan ini:
foo=bar bash -c 'echo $foo'
yang pertama kali menetapkan nilai ke foo
dan meneruskannya ke proses baru sebagai variabel lingkungan di mana ia dapat dicetak.
Anda dapat membaca lebih lanjut tentang hal itu di POSIX Shell Command Language Token recognition .
Tindak lanjut dari komentar @mikeserv :
Shell harus membaca inputnya dalam bentuk baris dari file, dari terminal dalam kasus shell interaktif, atau dari string dalam kasus sh -c atau sistem ().
Setelah token dibatasi, itu dikategorikan sebagai diperlukan oleh tata bahasa di Shell Grammar.
env foo=bar bash -c 'echo $foo'
@username...comment
pengguna yang Anda tentukan akan mendapat sedikit pesan yang memberi tahu mereka bahwa Anda sedang berbicara dengan mereka. baik, mereka akan jika utasnya relevan.luit.c
dan saya pikir saya bisa mengubahsetup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}
untuk melakukan2
argumen pertama. baik, saya kiracopyTermios()
dansetRawTermios()
fungsinya mungkin perlu sedikit modifikasi juga, tetapi harus sederhana, saya pikir. yangrc = (return)
untuk setiap baris tampak aneh - tapi aku tidak ada C programmer baik. Apakah itu milik Anda atau apakah itu warisan? dan jika komentar kosong Anda mengacu pada"${set_null_var:=new val and $(echo other stuff)}"
Anda sebagian besar aman tanpa apa-apa. beberapa kerang akan melakukan hal-hal aneh}
.