Pageferry
워크플로우

폴더 열기부터 종료 코드까지, Bash 스크립트 실행하기

03
스크립트 실행

WSL 또는 SSH에서 인수가 있는 Bash 스크립트 실행하기

Bash 스크립트는 세 가지 방법으로 시작할 수 있습니다: bash script.sh arg1 arg2, chmod +x 후 ./script.sh 실행(시뻥 줄로 인해 작동), 또는 셸을 대체하고 반환하지 않는 exec 내장 명령어 사용. 첫 번째 방식은 권한 변경이 필요하지 않아 시작하기 가장 쉽습니다. Shell은 선택한 환경(PC의 WSL 또는 SSH로 연결된 내 Linux 시스템)에서 명령을 실행하며, 채팅의 카드는 실제 출력과 종료 코드를 보여줍니다. 인수를 직접 지정하므로 한 번의 대화로 정상 케이스와 실패 케이스를 모두 테스트할 수 있습니다. 어떤 방식을 선택해야 할지 자주 묻습니다: 테스트 중에는 bash script.sh를 사용하세요. 파일에 실행 권한이 없어도 작동하기 때문입니다. 스크립트가 완성되고 시뻥 줄이 있는 경우 ./script.sh로 전환하세요. 어떤 방식을 사용하든 종료 상태는 0부터 255까지의 동일한 숫자이며, 0은 항상 스크립트가 성공적으로 종료되었음을 의미합니다.

01

폴더 열기

스크립트가 포함된 폴더를 작업 폴더로 선택하세요. read_file 및 grep과 같은 파일 도구들은 해당 폴더 내에서 작동합니다. 파일 도구들은 해당 폴더에 제한되지만, Shell, 웹 및 SSH는 제한이 없습니다.

02

승인 모드 선택

Ask first를 사용하면 각 변경 사항을 diff로 확인할 수 있으며, Plan only를 사용하면 먼저 계획을 읽어볼 수 있습니다. Auto-run은 즉시 작동합니다. Ask first는 변경을 일으키는 작업 전에만 일시 정지합니다.

03

실행 요청

실행 내용을 평이한 언어로 설명하세요. 예를 들어: 스크립트를 test 인수로 실행하세요. WSL과 서버가 모두 있는 경우 그 중 하나를 명시하세요. 스크립트 이름과 인수를 정확히 입력하세요.

04

결과 읽기

카드를 열어 출력과 실제 종료 코드를 확인한 후, 편집을 승인하거나 거부하세요. 0이 아닌 숫자는 정보입니다. 승인된 편집 후 다시 실행하세요. 예상 결과와 비교하세요.

작은 예제 스크립트

greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 NAME [COUNT]" >&2
  exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
  echo "Hello, $name ($i)"
done
exit 0

greet.sh는 이름이 누락되면 사용법 줄과 종료 코드 2로 종료되며, 선택적 count를 받아 기본값 1을 사용하며 루프 내에서만 인사를 출력합니다. 실행 전에 한 번 읽어보세요: sudo가 없고, 다운로드나 파일 이동/삭제가 없으므로 소유한 모든 기계에서 테스트해도 안전합니다. 줄별로: 시뻥 줄은 인터프리터를 지정하고, set -eu는 오류와 미설정 변수에서 중단하며, $# 테스트는 인수를 세고, for 루프는 출력만 합니다.

네 가지 작은 단계로 스크립트 실행하기

스크립트 파일 생성

빈 작업 폴더로 시작하세요. 에이전트에게 위의 예제를 작성해 달라고 요청하고, write_file은 해당 폴더에 greet.sh를 생성합니다. 카드를 열고 줄별로 파일을 읽어보세요: 첫 번째 줄은 인터프리터를 지정하는 시뻥 줄이며, set -eu는 오류와 미설정 변수에서 스크립트를 중단하고, $# 확인은 이름이 누락된 경우 나머지 부분을 보호합니다. Ask first 모드에서는 새 파일이 작성되기 전에 사용자의 승대를 기다립니다. 아직 실행된 것이 없습니다. 이 스크립트의 사용법 분기는 잘못된 사용 시 2를 선택하는데, 이는 일반적인 관례입니다. 각 줄을 이해할 때까지 파일만 승인하세요. 이해가 가지 않으면 에이전트에게 설명을 요청하세요. 거부된 편집은 폴더 상태를 변경하지 않습니다.

실행 및 종료 코드 읽기

“bash execute script”를 검색하는 사람들은 보통 한 줄을 원합니다: bash greet.sh test. 에이전트에게 실행을 요청하면 Shell이 채팅 환경(예: WSL)에서 명령을 시작하고 실제 출력과 실제 종료 코드를 반환합니다. 전체 출력을 보려면 카드를 확장하세요. 그런 다음 인수를 없이 같은 실행을 요청하면 사용법 줄과 종료 코드 2를 볼 수 있습니다. CLI 애플리케이션의 종료 코드는 호출자가 읽는 0부터 255까지의 숫자이며, 0은 성공을 의미합니다. 종료 코드 127은 명령을 찾지 못했음을, 126은 파일을 실행할 수 없음을 의미하므로, 이 두 숫자는 오타, 누락된 프로그램 또는 누락된 실행 권한을 가리킵니다.

스크립트 내부 인수 읽기

read_file은 스크립트를 보여주고 grep은 $1과 $2가 사용되는 위치를 찾아주므로, 각 인수가 기본값 또는 오류 메시지를 갖는지 확인할 수 있습니다. 선택적 인수를 구문 분석하는 방법은 다음과 같습니다: 스크립트는 getopts로 루프를 돌며, 값이 하나 또는 두 개뿐이면 plain $1과 ${2:-1}로 충분합니다. 인수가 있는 별명은 함수처럼 동작하지 않습니다. 별명은 입력된 단어를 텍스트로만 대체하므로, 값이 중간에 들어가야 하는 경우 함수를 사용하세요. 에이전트에게 하나의 변경 사항(예: count의 기본값)을 변경해 달라고 요청하고, edit_file이 보여주는 diff를 읽어보세요. 그런 다음 스크립트를 다시 실행하고 새로운 종료 코드를 이전 것과 비교하세요. Plan only는 아무것도 실행하지 않고 스크립트가 이해하는 매개변수를 나열할 수 있습니다.

소유한 서버에서 동일한 스크립트 실행

작업 환경이 SSH로 연결된 내가 소유한 Linux 시스템인 경우에도 동일한 단계가 작동합니다. 파일 도구는 채팅의 작업 폴더에서 계속 작동하지만, Shell 명령은 선택한 환경에서 실행되므로 카드가 어느 것을 가리키는지 확인하세요. 사람들이 “bash exec script”로 검색하는 exec 내장 명령은 셸을 다른 명령으로 대체하며 반환하지 않으므로, 그 이후의 아무것도 실행되지 않고 종료 코드는 새 명령의 것입니다. 파일이 이동或删除되기 전에 사본을 보관하고, echo로 먼저 테스트 실행을 수행하며, 권한이 있는 기계만 사용하세요. 채팅을 닫기 전에 마지막 카드를 읽어보세요. 모든 값을 다른 명령으로 전달할 때는 각 값의 형태를 유지하도록 "$@"를 큰따옴표로 감싸서 작성하세요.

Windows용 Pageferry

내 기계에서 Bash 스크립트 테스트하기

Pageferry 다운로드 ↗