변수 WORKSPACE
가 있습니다./Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en
각 행에서 이를 제거하고 두 개의 변수를 만들고 싶습니다.
예를 들어 온라인에서 검색해 보면
"/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/references/architecture/recipes/hermit.md",
얻기 위해
category=references/architecture/recipes
title=hermit.md
선의 깊이가 다릅니다.
"/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/guides/faq.md",
얻기 위해
category=guides
title=faq.md
등.
다음을 시도했지만 마지막 두 항목만 가져옵니다.
title=$(basename "$line")
filedirname=$(dirname "$line")
category=$(basename $filedirname)
Bash로 이 작업을 어떻게 수행할 수 있나요?
답변1
카테고리와 제목은 /.vivliostyle/tauri/en
경로 이름 뒤에 오는 내용에 따라 결정된다고 가정합니다.
다음 조건으로
WORKSPACE="/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en"
다음 방법을 사용하여 bash
원하는 결과를 얻을 수 있습니다.
pathname="${line#$WORKSPACE/}"
#or
pathname="${line/$WORKSPACE\/}" #replaces $WORKSPACE/ with nothing
#Getting category:
category="${pathname%/*}"
echo "Category: $category"
#Getting title:
title="${pathname##*/}"
echo "Title: $title"
따라서 다음과 같은 경로가 있습니다.
line="/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/references/architecture/recipes/hermit.md"
위의 코드를 사용하면 다음을 얻을 수 있습니다.
Category: references/architecture/recipes
Title: hermit.md
다음 경로가 있습니다.
line="/Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/guides/faq.md"
당신은 다음을 얻습니다:
Category: guides
Title: faq.md
설명하다
pathname="${line#$WORKSPACE/}"
위의 줄로삭제 중$WORKSPACE/
변수에 포함된 내용 $line
.
따라서 문자열이 /Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/
제거됩니다 /Users/shinichiokada/Bash_Projects/markdown-docs-as-pdf/.vivliostyle/tauri/en/references/architecture/recipes/hermit.md"
.
내가 입력한 문자열은 $pathname
다음과 같습니다.
references/architecture/recipes/hermit.md
category="${pathname%/*}"
위 줄은 /
경로에서 마지막으로 발견된 모든 항목을 삭제합니다. references/architecture/recipes/hermit.md
따라서 여기에서 삭제되는 내용은 다음 /hermit.md
과 $category
같습니다.
references/architecture/recipes
title="${pathname##*/}"
위 줄은 /
마지막 경로 이전의 경로에 있는 모든 항목을 삭제합니다.
references/architecture/recipes/hermit.md
따라서 여기서 삭제되는 항목은 다음과 같습니다 references/architecture/recipes/
. 그러면 유언장에는 다음이 $title
포함됩니다.
hermit.md