私はsh
速記でコマンドを実行することを好み、POSIXを使用することを好みます。正直なところ、スクリプトがDashで実行できる場合はそれで十分です。これは[
、拡張コマンドではなくテストコマンドを使用することを意味します[[
。
不明な自動起動スクリプトの例があります。
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
eval `dbus-launch --sh-syntax --exit-with-session`
fi
だから私の考えでは、dbus-launch
sumが$DBUS_SESSION_BUS_ADDRESS
空であれば実行してくださいeval
。これをどのように短縮できますか?このトピックについてご協力いただきありがとうございます。
答え1
あなたが投稿したコードスニペットはPOSIX正当であり、そのままうまく機能しますdash
。 sを削除して1行のコードに置き換えることは意味がないと思いますif
。なぜなら、コードを読みにくくする以外に、あまり役に立たないからです。しかし、この場合は1行なので、単に、if
を削除して、つまりに置き換える; then
だけです。fi
; then
&&
which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS" &&
eval `dbus-launch --sh-syntax --exit-with-session`
質問のスニペットと機能的に同じでなければなりません。また、これが「速記」が意味するものであれば、これは一般的な用語や標準的な用語ではなく、入力文字をあまり節約できないと思います。 複合コマンドをif
リストに変換より正確な説明になります。