GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menggunakan Boolean Dalam Cangkang Ikan?

Saya beralih ke fish shell dan cukup senang dengan itu. Saya tidak mengerti bagaimana saya bisa menangani boolean. Saya berhasil menulis config.fish yang mengeksekusi tmux di ssh (lihat:Bagaimana saya bisa memulai tmux secara otomatis di kulit ikan saat menghubungkan ke server jauh melalui ssh) koneksi tetapi saya tidak senang dengan keterbacaan kode dan ingin mempelajari lebih lanjut tentang fish shell (Saya sudah membaca tutorial dan melihat melalui referensi). Saya ingin kode terlihat seperti itu (saya tahu sintaksnya salah, saya hanya ingin menunjukkan ide):

set PPID (ps --pid %self -o ppid --no-headers) 
if ps --pid $PPID | grep ssh 
    set attached (tmux has-session -t remote; and tmux attach-session -t remote) 
    if not attached 
        set created (tmux new-session -s remote; and kill %self) 
    end 
    if !(test attached -o created) 
        echo "tmux failed to start; using plain fish shell" 
    end 
end

Saya tahu bahwa saya dapat menyimpan $status es dan bandingkan dengan test sebagai bilangan bulat tapi saya pikir itu jelek dan bahkan lebih tidak terbaca. Jadi masalahnya adalah menggunakan kembali $status es dan gunakan dalam if dan test .

Bagaimana saya bisa mencapai sesuatu seperti ini?

Jawaban yang Diterima:

Anda dapat menyusun ini sebagai rantai if/else. Mungkin (meskipun berat) untuk menggunakan awal/akhir untuk menempatkan pernyataan majemuk sebagai kondisi if:

if begin ; tmux has-session -t remote; and tmux attach-session -t remote; end
    # We're attached!
else if begin; tmux new-session -s remote; and kill %self; end
    # We created a new session
else
    echo "tmux failed to start; using plain fish shell"
end

Gaya yang lebih bagus adalah pengubah boolean. awal/akhir menggantikan tanda kurung:

begin
    tmux has-session -t remote
    and tmux attach-session -t remote
end
or begin
    tmux new-session -s remote
    and kill %self
end
or echo "tmux failed to start; using plain fish shell"

(Awal/akhir pertama tidak sepenuhnya diperlukan, tetapi meningkatkan kejelasan IMO.)

Memfaktorkan keluar fungsi adalah kemungkinan ketiga:

function tmux_attach
    tmux has-session -t remote
    and tmux attach-session -t remote
end

function tmux_new_session
    tmux new-session -s remote
    and kill %self
end

tmux_attach
or tmux_new_session
or echo "tmux failed to start; using plain fish shell"

Linux
  1. Cara Menggunakan Perintah Linux Rsync (Sinkronisasi Jarak Jauh)

  2. Bagaimana cara menggunakan perintah su melalui adb shell?

  3. Bagaimana cara menginstal Fish Shell di AWS Linux

  1. Cara Menggunakan Tmux + Cheat Sheet

  2. Cara menggunakan alias shell di Linux

  3. Cara memulihkan shell setelah pemutusan

  1. Cara menggunakan kemampuan akses jarak jauh Kotak GNOME

  2. Cara Menggunakan SFTP untuk Mentransfer File

  3. Cara Menggunakan Applet Indikator di GNOME Shell