Saya memiliki baris perintah yang menampilkan baris perintah yang berbeda, misalnya:
> commandlineA param1 param2
commandlineB param1
Saya ingin memiliki satu eksekusi baris perintah yang akan menjalankan commandlineB dengan parameter yang diberikan.
Apakah ada cara sederhana untuk melakukan itu menggunakan baris perintah tunggal atau apakah saya perlu menjalankan file bash kecil yang akan menyimpan output dalam sebuah variabel dan kemudian menjalankannya?
Terima kasih
ubuntu
command-line
bash
Lior Ohana
sumber
sumber
Jawaban:
Anda tampaknya telah menyelesaikannya sendiri, tetapi Anda dapat menggunakan:
Edit dari edit: di bawah ini agak salah, sementara itu menjalankan perintah dalam subkulit, ternyata variabel lingkungan masih akan tersedia. Maaf untuk orang yang menyesatkan ...
Sunting: yang akan berjalan dalam subkulit, variabel lingkungan apa pun yang tidak diekspor tidak akan digunakan. Jika Anda ingin menjalankan perintah di shell yang sama, Anda perlu menggunakan:
Jawaban lain yang diberikan adalah menyalurkan melalui bash itu sendiri:
Itu juga akan dieksekusi dalam sebuah subkulit, untuk berjalan dalam shell yang sama Anda akan perlu:
Secara kebetulan, Anda juga dapat menggunakan back ticks alih-alih sintaks $ (), tetapi tidak disarankan .
sumber
eval
sini. Jika Anda punya alasan, mohon jelaskan. (3) Contoh terakhir Anda (dengan-c
) sama sekali salah.Gunakan ini:
Contoh:
Keluaran:
sumber
$(commandlineA param1 param2)
printf '\143\144\040\057\n' | bash
akhirnya adalah no-op, karena perintah dijalankan dalam proses shell baru, terpisah (dan sementara). Sebaliknya,$(printf '\143\144\040\057\n')
akan menyebabkan shell, aktif, interaktif saat ini mengubah direktori.