셸 명령을 사용하여 다른 프로그램에 대한 인수로 사용할 파일 경로를 조작합니다.

셸 명령을 사용하여 다른 프로그램에 대한 인수로 사용할 파일 경로를 조작합니다.

find다음을 사용하여 파일 목록을 찾을 수 있습니다 .

find -type f -path "./src*" -name "*.php"`  

예를 들어:

./src/Superuseradmin/Model/Mapper/UUID.php
./src/Superuseradmin/Model/Mapper/Mapper.php

내가 해야 할 일은 파일 이름을 읽는 것입니다.

./src/Superuseradmin/Model/Mapper/Mapper/UUID.php  

이를 사용하여 경로에 포함된 정보를 기반으로 PHPUnit 테스트 프레임워크를 생성합니다.

Superuseradmin\Model\Mapper\UUID  
./test/Superuseradmin/Model/Mapper/UUIDTest.php

이렇게 하면 각각에 대해 다음 명령을 실행할 수 있습니다.

phpunit-skelgen.phar --test -- Superuseradmin\Model\Mapper\MyMapper \
./src/Superuseradmin/Model/Mapper/MyMapper.php \
./test/Superuseradmin/Model/Mapper/MyMapperTest.php

답변1

다음은 빠른 시도입니다.

for i in `find -type f -path "./src*" -name "*.php"`; do echo phpunit-skelgen.phar --test -- `echo $i | sed -e 's!./src/!!' | sed -e 's/.php//' | sed -e 's/\\//\\\/g'` $i `echo $i | sed -e 's!./src/!./test/!' | sed -e 's/.php/Test.php/'`;done

다음과 같은 디렉토리 구조를 고려하면:

./src/Superuseradmin/Model/Mapper/MyMapper.php
./src/Superuseradmin/Model/UUID.php

다음과 같이 출력되어야 합니다.

phpunit-skelgen.phar --test -- Superuseradmin\Model\Mapper\MyMapper ./src/Superuseradmin/Model/Mapper/MyMapper.php ./test/Superuseradmin/Model/Mapper/MyMapperTest.php
phpunit-skelgen.phar --test -- Superuseradmin\Model\UUID ./src/Superuseradmin/Model/UUID.php ./test/Superuseradmin/Model/UUIDTest.php

그런 다음 이를 스크립트에 저장하고 확인하고 실행할 수 있습니다. 파일 이름에 공백이 있는지 확인하십시오. 문제가 발생할 수 있습니다.

답변2

쉘 스크립트를 생성합니다:

#! /bin/bash

find_path="./src/Superuseradmin/Model/Mapper/UUID.php"
# find_path="$1"
class="${find_path#./src/}" # Superuseradmin/Model/Mapper/UUID.php
class="${class%.php}" # Superuseradmin/Model/Mapper/UUID
class="${class//\//\\}" # Superuseradmin\Model\Mapper\UUID
classhead="${class%\\*}" # Superuseradmin\Model\Mapper
classtail="${class#"$classhead"}" # \UUID
class="${classhead}${classtail}" # Superuseradmin\Model\Mapper\UUID
# echo "class: '${class}'"

testfile="./test${find_path#./src}"
testfile="${testfile%.php}Test.php"
# echo "testfile: '${testfile}'"

echo phpunit-skelgen.phar --test -- "$class" "$find_path" "$testfile"

다음 스크립트를 호출하세요 find.

find -type f -path "./src*" -name "*.php" -exec /my/script.sh {} \;

답변3

어쩌면 다음과 같은 작업을 수행하고 싶을 수도 있습니다.

cd src
for i in $(find . -type f -name '*.php'); do
 SRC=$i
 DST="../test/$(dirname $i)/$(basename $i php)Test.php"
 echo "copy $SRC to $DST"
 #cp $SRC $DST
done

관련 정보