나는 이런 일을하고 싶다 :
gatekeeper.sh && <script>
gatekeeper.sh
<script> 실행 여부를 결정하는 일부 조건에 따라 0 또는 1을 반환합니다. 지금까지는 작동하지만 다음과 같습니다.
- Gatekeeper.sh는 성공하지만 <script>는 성공하지 못하는 경우 전체 명령이 실패해야 합니다(종료 상태 != 0).
- 전체 명령은아니요Gatekeeper.sh가 실패하면 실패합니다(그리고 두 번째 명령은 실행되지 않습니다).
- <script>는 변경하면 안 됩니다.
가능하다면 가독성을 높이기 위해 구문을 최대한 짧게 하고 싶습니다.
답변1
가능하다면 가독성을 높이기 위해 구문을 최대한 짧게 하고 싶습니다.
이 경우에는 "최대한 짧다" ≠ "가독성이 좋다"라고 생각합니다. 귀하의 요구 사항에 맞는 구문과 회사를 생각해 낼 수 있다고 하더라도 &&
코드 작성자가 의도한 바가 무엇인지 한눈에 파악하기 어려울 것이라고 생각됩니다.
이 경우 명확성을 위해 추가 설명이 필요하다고 생각합니다.
if gatekeeper.sh; then
<script>
fi
어느 정도 가장 읽기 쉬운 코드는 비즈니스 로직의 영향을 받을 수 있습니다. 논리적 의도를 코드로 가장 투명하게 변환하는 구성은 무엇입니까?
답변2
토론을 위해 내 접근 방식을 가져옵니다. 알아요평가하다예사악한(때때로)그러나 나는 실행되는 명령을 신뢰합니다.
게이트키퍼.sh
#!/usr/bin/bash
if [[ <condition> ]]; then
eval "$1"
exit "$?"
fi
용법:gatekeeper.sh "<command>"
답변3
gatekeeper.sh
변수에서 종료 상태를 캡처하고 나중에 변수에서 사용할 수 있습니다 exit
(또는 return
스크립트가 아닌 함수인 경우).
#!/bin/sh
gatekeeper.sh
status=$?
[ "$status" != 0 ] && <script>
exit "$status"