함수 헤더 앞에 함수 주석이 배치되면 인쇄되지 않습니다.

함수 헤더 앞에 함수 주석이 배치되면 인쇄되지 않습니다.

쉘 기능에 주석을 추가하는 데 대한 훌륭하고 완전한 안내서는 다음과 같습니다.함수 헤더 앞에 배치하세요.. 가능한 한 이 지침을 따르려고 노력했지만 이러한 규칙으로 인해 함수의 주석을 읽기가 어려워졌습니다. 예를 들어 내 함수의 주석에 액세스할 수 없습니다.

#######################################
# init the current directory with the required files to work with latex in Vscode's extension LaTeX workshop
# Arguments:
# $1 -> Main .tex file. Optional. Default to "main.tex"
#######################################
initlatex () {
    curl https://gist.githubusercontent.com/tapyu/886dc95fc19c4250fb38581ccc58bed8/raw/0eeaa62d401659fe1c57602ec8f17608775d5338/_default_preamble.tex > default_preamble.tex
    grep -q "\\input{default_preamble.tex}" ${1:-main.tex} || sed -i '2i\\\input{default_preamble.tex}\n' ${1:-main.tex}
    curl https://gist.githubusercontent.com/tapyu/886dc95fc19c4250fb38581ccc58bed8/raw/Makefile > Makefile
    [[ ! -d .vscode ]] && mkdir --parents --verbose .vscode
    curl https://gist.githubusercontent.com/tapyu/886dc95fc19c4250fb38581ccc58bed8/raw/0eeaa62d401659fe1c57602ec8f17608775d5338/_vscode_makefile.json > .vscode/settings.json
}

터미널에서 직접 다음 명령을 사용하십시오 which.

❯ which initlatex
initlatex () {
    curl https://gist.githubusercontent.com/tapyu/886dc95fc19c4250fb38581ccc58bed8/raw/0eeaa62d401659fe1c57602ec8f17608775d5338/_default_preamble.tex > default_preamble.tex
    grep -q "\\input{default_preamble.tex}" ${1:-main.tex} || sed -i '2i\\\input{default_preamble.tex}\n' ${1:-main.tex}
    curl https://gist.githubusercontent.com/tapyu/886dc95fc19c4250fb38581ccc58bed8/raw/Makefile > Makefile
    [[ ! -d .vscode ]] && mkdir --parents --verbose --parents --verbose .vscode
    curl https://gist.githubusercontent.com/tapyu/886dc95fc19c4250fb38581ccc58bed8/raw/0eeaa62d401659fe1c57602ec8f17608775d5338/_vscode_makefile.json > .vscode/settings.json
}

이 모범 사례를 위반하지 않고 함수의 주석을 인쇄하는 또 다른 명령이 있습니까?

답변1

한 가지 접근 방식은 LISP 프로그래머가 사용하고 Python과 같은 언어에서 채택한 접근 방식을 취하고 주석 구문을 사용하는 대신 독스트링을 사용하는 것입니다.(독스트링). which/whence/type을 사용할 때 이 내용을 볼 수 있습니다. LISP에서는 문자열이 스스로 평가되고 무시됩니다. 셸의 경우 이를 할당해야 합니다(예: _doc).

gmt(){
   _doc="Show date in gmt"
   date -u "$@"
}

두 번째 방법은 함수가 매개변수를 허용한다는 점에 유의하는 것입니다. 첫 번째 인수를 사용하여 함수를 호출하는 경우 --help도움이 되는 규칙을 설정할 수 있습니다.크쉬 93getopts이러한 항목을 쉽게 생성할 수 있는 확장 파서가 있습니다 .예를 들어 이env주문하다.

답변2

엄격한 코딩 규칙을 통해 함수 이름과 관련된 변수에 문서를 넣습니다. 예를 들어, 아, 변수와 함수가 서로 다른 네임스페이스에 있기 때문에 이름은 완전히 동일합니다.

initlatex='
#######################################
# init the current directory with the required
# files to work with latex in Vscode'\''s extension LaTeX workshop
# Arguments:
# $1 -> Main .tex file. Optional. Default to "main.tex"
#######################################
'
initlatex () {
    curl ...
}

이제 함수 이름을 알면 해당 문서를 얻을 수 있습니다.

$ echo "$initlatex"

#######################################
# init the current directory with the required
# files to work with latex in Vscode's extension LaTeX workshop
# Arguments:
# $1 -> Main .tex file. Optional. Default to "main.tex"
#######################################

답변3

같은 방식으로 코딩하고 함수 위에 자세한 설명을 추가했지만 함수 자체에 한 줄을 추가했습니다.

function dewpoint() { # Calculate dewpoint(C) based on Temperature(C) and Humidity(%)

llfunctions그런 다음 한 줄의 정보를 표시하는 작은 스크립트가 있습니다.

dewpoint() Calculate dewpoint(C) based on Temperature(C) and Humidity(%)

llfunctions

#!/usr/bin/env bash
source ~/bin/functions-prt

list=(~/bin/functions-*)
[[ $1 ]] && list=("$@")

for fn in "${list[@]}"; do
    name=$(basename "$fn")
    prt-underline "$name"
    prt ""
    awk '/^function/ { printf "%25s", $2; $1=$2=$3=$4=""; $0=$0; print $0 }' "$fn"
    prt ""
done

답변4

which myfunction(당신이 사용하고 있는 것으로 보이는 zsh에서) 함수 코드의 미리 컴파일된 형태의 쉘 구문 렌더링을 보여줍니다.

컴파일된 코드의 일부가 아니기 때문에(셸뿐만 아니라 모든 언어에서) 주석을 찾을 수 없습니다. 표시되는 코드는 함수를 정의하는 코드와 다를 수 있으며, 별칭이 확장되고, 들여쓰기가 달라지며, 줄이 계속 제거되고, 짧은 형식이 긴 형식으로 변경되는 등의 현상을 확인할 수 있습니다.

여기서는 작성자가 작성한 실제 소스를 보고 싶은 것 같습니다. .NET 대신 파일 file.java에서 Java 함수의 소스 코드를 보고 싶은 것과 같습니다 .file.classfile.class

에서는 zsh파일에 정의된 함수에 대해 다음과 같은 방법으로 해당 파일을 볼 수 있습니다.

view $functions_source[myfunction]

(또는 좋아하는 뷰어/편집기) 파일이 아직 존재한다고 가정합니다. 또한 구문 강조 및 기타 뷰어/편집기 혜택을 누릴 수 있습니다.

type myfunction또한 함수 정의를 읽는 위치도 알려줍니다.

$ type ls _ls
ls is a shell function from /home/chazelas/.zshrc
_ls is a shell function from /usr/share/zsh/functions/Completion/Unix/_ls

관련 정보