"[ "$foo_user" = 'foo' ] && foo_user='bar' || true"는 무엇을 합니까?

"[ "$foo_user" = 'foo' ] && foo_user='bar' || true"는 무엇을 합니까?

나는 이 줄이 무엇을 하는지 설명하는 코멘트 없이 우리 저장소 중 하나에서 발견했습니다. 이 저장소에서 발견된 버그를 수정하고 있지만 해당 줄을 어떻게 해야 할지 모르겠습니다. 시간 효율적으로 조사하는 방법을 잘 모르겠어서 여기에 질문드립니다.

[ "$foo_user" = 'foo' ] && foo_user='bar' || true

$foo_user='foo'if then이 true를 반환하는지 테스트한 다음 설정 foo_user되지 않은 경우 "bar"를 설정하는 if 문처럼 보입니까 ? 나는 정말로 무엇을 해야할지 모르겠습니다.

이 코드는 무엇을 합니까?

답변1

그것을 분석해 봅시다:

[ "$foo_user" = 'foo' ]

foo_user변수 값이 "foo"인지 확인합니다 .

&& foo_user='bar'

Run() 이전 명령이 성공했다면 값이 "foo" &&이면 "bar"로 설정합니다.foo_user

|| true

Run() 이전 명령이 실패하면 ||복합 명령(이 경우 전체 행)은 모든 경우에 성공합니다. 활성화되면 이 모드가 일반적입니다 set -e(실제로 필요하지 않더라도).

당신은 또한 볼 수 있습니다쉘의 제어 및 리디렉션 연산자는 무엇입니까?,쉘 논리 연산자 && 및 ||의 우선순위, 그리고"command || true" 패턴이 왜 유용한가요?

관련 정보