Bash
POSIX 和 Bash,sh 簡寫,用於復合 if 語句
我更喜歡
sh
用速記方式執行命令,而且我更喜歡使用 POSIX。說實話,如果腳本可以在 Dash 上執行,那就足夠了。這意味著使用 test 命令[
,而不是擴展的[[
.我有一個來自自動啟動腳本的範例,我不確定。
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then eval `dbus-launch --sh-syntax --exit-with-session` fi
所以我的猜測是如果
dbus-launch
and$DBUS_SESSION_BUS_ADDRESS
是空的,那麼做eval
. 我如何用速記寫這個?我感謝任何關於這個主題的幫助。
您發布的程式碼段是 POSIX 合法的,應該可以正常執行
dash
。我不明白刪除if
s 並用單行替換它們的意義,因為除了偶爾使程式碼更難閱讀之外,它實際上並沒有太大的作用。然而,在這種情況下,由於它只是一行,您可以簡單地刪除if
,; then
和並用 afi
替換 the ,即; then``&&
which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS" && eval `dbus-launch --sh-syntax --exit-with-session`
應該在功能上等同於問題中的程式碼段。另外,如果這就是您所說的“速記”,我認為這不是通用或標準術語,並且不會節省太多打字字元。 將
if
復合命令轉換為列表將是更準確的描述。