作者:
cuello (cuello)
2018-11-02 10:42:03容我發發牢騷,請包涵
這學校老師應該都講過吧...
寫程式時,要記得回傳個有意義的 exit code
不然, 別的程式往往都要額外浪費時間處理
當然, 特別是指令行程式, GUI 就不那麼在.
但是無論是用 C 來 code, 還是任何 script
都有我們應該共同遵守的交通規則.
事情是這樣的
剛剛用到 pacmd(1)
這是 pulseaudio-utils 套件裡的程式
$ pacmd set-default-sink 1
$ echo $?
0
$ pacmd set-default-sink 你老師
Sink 你老師 does not exist.
$ echo $?
0
對的給 0, 不對的也給 0
那我不是還要去 parse "你老師" 那一行
來判斷這個指令的執行結果
(而且"你老師"也應該送到 stderr,
不是 stdout, 雖然此處並不關鍵...)
要是每個 CLI 程式都採這樣行為
我看我這個小 script 起碼變成兩倍大
而且要多花一倍的時間在這上面
沒記錯的話, 上一次碰到的是 xrandr(1)
搞得整個地球上的人都在想辦法繞道...
大家都遵守交通規則, 最後受益的也是大家
而且整體效率一定會顯著提升
有一次, 搭德國人車子在縣道
遠看, 另一台高速從旁邊衝出來
這個德國朋友卻繼續談笑, 不減速
我緊張地用手指著那台車....
他只說
沒關係, 我們在幹道
然後繼續向前衝, 眼看就...
咦? 他真的停下來了也!
這樣不是大家都省事嗎?
多包涵吧
作者: dou0228 (7777) 2018-11-02 10:44:00
這很正常,一堆程式搞不清楚啥該送去stderr/stdoutexit code 就更不用說最後變成 跑去 pipe grep string
作者:
bitlife (BIT一生)
2018-11-12 11:07:00本文提的其實有點像rm -f 沒刪到檔算正常結束還是錯誤?這點我是覺得由開發者決定,而不像rm刪除權限不足一樣確定是錯誤.ls 也類似 'ls 你老師' 但沒'你老師'算不算錯誤?如果沒有檔案算錯誤,那麼 ls *a 但沒有a結尾這些都得變錯誤. 所以還是可能還是由開發者決定a結尾的檔目前linux的rm是設計-f來區隔,沒用-f沒找到檔就算錯誤ls無類似機制,沒找到就報錯. 你文中的例子比較傾向ls