Fish의 Bash Set

Nilesh Katuwal 2023년1월30일
  1. Bash set -x
  2. Bash set -e
  3. Bash set -u
  4. 물고기 껍데기 명령
Fish의 Bash Set

이 기사에서는 생선 껍질에서 set -e, set -uset -x를 bash하는 방법을 배웁니다.

Bash set -x

set -x 명령은 디버깅 및 문제 해결을 위해 실행된 각 명령문을 셸에 인쇄하여 Bash 스크립트를 디버깅하는 데 사용됩니다. set -x 명령은 대화식 Bash 셸이나 Bash 스크립트 내에서 직접 실행할 수 있습니다.

set -x 명령은 일반적으로 sh-bang 뒤에 Bash 셸의 초기화를 배치합니다.

이 예에서는 set -x 명령을 사용하여 디버깅을 활성화합니다. 기본적으로 Bash에서는 디버깅이 비활성화되어 있습니다.

대신, 검증을 용이하게 하기 위해 각 명령문이 Bash 터미널에 인쇄되고 명령문의 결과가 뒤따릅니다. 예를 들어 echo "The First Tree"가 먼저 쓰여지고 그 결과가 뒤따릅니다.

또한 디버그된 문은 더하기 기호로 시작합니다.

#!/bin/bash

set -x

echo " The First Tree"

echo "The Second Tree"

출력:

+ echo ' The First Tree'
 The First Tree
+ echo 'The Second Tree'
The Second Tree

Bash set -e

set -e 명령은 스크립트 또는 함수의 실행에 의존하고 결과에 대한 정확한 정보를 원하는 경우 스크립트 또는 함수의 실행을 중지하고 0이 아닌 오류 코드를 반환하는 데 사용할 수 있습니다.

기본적으로 Bash 함수와 스크립트는 실행이 오류 없이 올바르게 완료되면 0을 반환합니다. 그러나 문제가 발생하면 오류 코드가 오류에 대한 특정 세부 정보를 제공합니다.

다음 예에서는 스크립트 시작 부분에서 오류가 발생하면 종료를 구성합니다. 루트 권한이 없으므로 mkdir /root/test는 오류를 반환하고 디렉터리를 생성할 수 없습니다.

결과적으로 echo "Progress..." 라인을 실행하고 터미널에 표시할 수 있습니다.

#!/bin/bash

set -e

mkdir /root/test


echo "Progress..."

Bash set -u

set-u 명령은 Bash 쉘이 설정되지 않은 변수를 오류로 해석하고 즉시 종료하도록 지시합니다. 이것은 우리를 고급 언어의 동작에 상당히 더 가깝게 만듭니다.

set -u 명령은 사용하지 않는 Bash 변수에 대한 오류를 방지하고 표시할 수 있습니다.

예시:

#!/bin/bash
firstName="Jackie"
fullName="$firstname John"
echo "$fullName"

앞의 예를 참조하십시오. 실수가 보이시나요?

세 번째 줄의 오른쪽에는 "firstname"이라는 단어가 낙타 대소문자 대신 모두 소문자로 표시됩니다. -u 옵션이 없으면 이 오류가 표시되지 않습니다.

그러나 -u 옵션을 사용하면 스크립트가 종료 코드 1로 해당 행에서 종료되고 "firstname: unbound variable" 메시지가 stderr에 인쇄됩니다.

일반적으로 우리는 훨씬 나중에 발견할 수 있는 미묘한 버그를 만드는 대신 명시적이고 즉시 실패하기를 원합니다.

물고기 껍데기 명령

set fish_trace 1 # display the expanded command line before execution
set fish_trace 2 # prepend file and line number to the command line

set fish_trace 1 1 # print the command line before execution and the exit status following execution.

set fish_trace 1 2 # as above, except print the exit status of all subprocesses (?)

set fish_trace 0 1 # print command-line exit status

set -u, set -eset -x와 같은 이러한 옵션은 Fish에 존재하지 않습니다. Fish에서 변수를 설정하기 위한 전용 구문은 없습니다.

대신 표준 명령인 set을 사용합니다. 이 명령은 변수 이름과 해당 값을 허용합니다. 변수와 값이 모두 제공되면 set은 지정된 이름을 가진 변수에 값을 할당합니다.

Fish의 모든 변수는 목록이므로 여러 값이 허용됩니다.