Latihan 1: Subshells & Process Substitution — Terminal

Latihan 1 dari materi Subshells & Process Substitution di Terminal — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Simulasikan subshell, grup, dan process substitution dengan tiga function. Kode di bawah ketiga function di kode awal (object parent dan shared, serta delapan console.log) biarkan begitu.

  1. runInSubshell(parentEnv, task) meniru ( ... ): bikin salinan dangkal env-nya ({ ...parentEnv }), jalankan task(salinan), lalu kembalikan { parent, child }. parent adalah object asli yang tadi dikirim, gak berubah sama sekali. child adalah salinannya setelah diubah task. Keduanya harus object yang berbeda.
  2. runGrouped(parentEnv, task) meniru { ...; }: jalankan task(parentEnv) langsung di object aslinya, lalu kembalikan object yang sama itu.
  3. compareOutputs(cmdA, cmdB) meniru comm -12 <(sort a) <(sort b): cmdA() dan cmdB() masing-masing mengembalikan array baris. Urutkan keduanya, lalu kembalikan array baris yang ada di keduanya, dalam keadaan urut.

Output-nya harus persis delapan baris ini, berurutan:

  1. dev
  2. prod
  3. added
  4. dev
  5. 99
  6. new
  7. true
  8. ["apple","cherry"]

Ada juga cek tambahan: runInSubshell dengan env { A: 1 } dan task yang mengisi A = 2, B = 3 harus membiarkan induknya tetap A: 1 dan mengembalikan parent yang sama persis dengan object asli. runGrouped dengan { N: 1 } dan task N = 5 harus mengembalikan object yang sama, berisi N: 5. compareOutputs untuk ["b", "a", "c"] dan ["c", "a", "d"] harus ["a", "c"].

Hint