Terkadang saya perlu mengeksekusi satu perintah yang ada dalam skrip shell.
Saya sudah tahu sed -n 'line_num p'
bisa mencetak garis itu. Tapi bagaimana saya bisa mengeksekusi yang dicetak baris tertentu sebagai perintah?
bash
command-line
Zen
sumber
sumber
line_num
danp
, jadi misalnya jikaline_num
123, maka Anda bisased -n 123p | bash
. Dan jikash
sudah cukup, maka gunakansh
sajabash
.sed -n 'line_num p' | sh
bisa jadi solusi lain? Apakah yang ini memiliki lebih banyak kompatibilitas?sh
sebenarnya shell itu. Pada Debian (dan berasal) sistemsh
biasanyadash
. Jika skrip ditulis untukdash
(atau bergantung pada sintaks portabel) maka mungkin, ya, tetapi jika itu ditulis untukbash
maka hampir pasti tidak.history
dan saya melihat bahwa saya ingin menjalankan baris 900, dapatkah saya menjalankan baris 900 entah bagaimana?Jika Anda melakukan ini secara interaktif, Anda bisa menulis baris ke dalam bash history:
Kemudian tekan ↑Enteruntuk memasukkan baris ke buffer readline, dan jalankan; yang memberi Anda kesempatan untuk melirik garis sebelum terlambat.
sumber
man history
history
adalah built-in, sehingga didokumentasikan dalamhelp history
(atauman bash
, tapi itu banyak bacaan). Mengutip hal di atas,history -s
akan "menambahkan ARG ke daftar riwayat sebagai satu entri"Anda dapat melakukan...
Itu hanya akan mendapatkan
$NUM
baris dari skrip Anda di variabel shell$line
dan kemudian mengevaluasinya sebagai perintah di shell saat ini.Cara lain untuk melakukan ini bisa terlihat seperti:
sumber
eval
.gnu sed
memilikie
bendera sehingga sesuatu sepertised "${NUM}"'!d;s/^//e;q'
juga berfungsiApakah Anda mengedit skrip dengan vim (vi di Linux)? In vi menambahkan pemetaan:
dan kemudian ketika Anda berada di jalur yang menarik di vi tekan F4
sumber
Dalam bash Anda dapat menjalankan perintah berikut:
sumber