Bash 스크립트를 사용하여 일부 텍스트가 포함된 파일을 만드는 방법

Bash 스크립트를 사용하여 일부 텍스트가 포함된 파일을 만드는 방법

나는 클래스 이름을 인수로 사용하는 bash 스크립트를 .sh에 작성했습니다. 이 스크립트를 실행하면 class스크립트와 동일한 공간에 디렉터리가 생성됩니다.

그런 다음 디렉토리 내부의 매개변수로부터 받은 클래스 이름과 동일한 클래스 이름을 가진 PHP 파일을 생성합니다 class. 그러나 동일한 파일이 이미 존재하는 경우 프로그램을 종료하십시오.

문제: Microsoft Windows에서 작동하지만 Gnu/Linux에서도 실행하려면 필요합니다.

이 내 꺼야.sh

#!/bin/bash

CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
mkdir -p $CURRENT_PATH/class
cd $CURRENT_PATH/class
if [ -f "[email protected]" ];
then
   exit 1
else
   echo "class $@
{
}" > [email protected]
fi

답변1

내가 보는 유일한 문제는 따옴표가 누락되었다는 것입니다. 따라서 디렉터리/파일 이름에 공백이 있으면 오류가 발생합니다.

#!/bin/bash

current_path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
mkdir -p "$current_path/class"
cd "$current_path/class"
if [ -f "$1.php" ];
then
   exit 1
else
   echo "class $1
{
}" > "$1.php"
fi

사용법에 대한 질문도 있습니다 "$@". 원하는 것입니까? 그런 뜻 이었습니까 "$*"?

그리고 변수 이름은 소문자여야 합니다. 이것이 어떻게 문제를 일으킬 수 있는지 이해하지 못하지만, 버그가 발생하기를 기다리고 있습니다.

실행하면 shellcheck대부분의 오류가 발견됩니다.

관련 정보