나는 이 줄이 무엇을 하는지 설명하는 코멘트 없이 우리 저장소 중 하나에서 발견했습니다. 이 저장소에서 발견된 버그를 수정하고 있지만 해당 줄을 어떻게 해야 할지 모르겠습니다. 시간 효율적으로 조사하는 방법을 잘 모르겠어서 여기에 질문드립니다.
[ "$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" 패턴이 왜 유용한가요?