"파일 이름이 명령줄 인수로 제공되었다고 가정합니다.", 이것은 무엇을 의미합니까?

"파일 이름이 명령줄 인수로 제공되었다고 가정합니다.", 이것은 무엇을 의미합니까?

파일의 총 단어, 문자 및 줄 수를 표시하는 쉘 스크립트를 작성해야 하는데 파일 이름이 "명령줄 인수로 제공됩니다." 이것이 무엇을 의미하며 어떻게 사용합니까?

답변1

파일 이름이 명령줄 인수로 제공되면 스크립트가 다음과 같이 호출된다는 의미입니다.

./myscript.sh some-file-name

즉, 파일 이름이 명령줄에 인수로 제공됩니다.

따라서 스크립트 목록의 첫 번째 요소는위치 매개변수파일 이름은 자동으로 채워집니다. 위치 매개변수는 $1, 등의 값입니다(이런 것들이 있습니다 ). 이 경우에는 단지 무언가(주어진 파일 이름)를 포함하고 있습니다 $2.$3$#$1

스크립트에서 특정 파일 이름을 사용하려면 를 사용하세요 "$1". 코드를 더 읽기 쉽게 하려면 이름이 지정된 셸 변수에 할당하세요.

#!/bin/sh

# Pick out the filename given on the command line.
name=$1

# Verify that the given name is indeed a (regular) file,
# or a symbolic link to a regular file.
if [ ! -f "$name" ]; then
    # It's not, so output error message and exit.
    printf 'The given name "%s" is not a regular file!\n' "$name" >&2
    exit 1
fi

printf 'The given filename is "%s"\n' "$name"

위 스크립트는 또한 주어진 파일 이름이 존재하고 일반 파일(즉, 디렉토리가 아님)인지 또는 일반 파일에 대한 유효한 심볼릭 링크인지 확인합니다.


참고 사항: 사용자가 하나 이상의 파일 이름을 제공해야 하는 스크립트를 작성할 때 위의 예와 같이 명령줄에서 파일 이름을 가져오도록 스크립트를 정렬하는 것이 가장 좋습니다. 대안은 대화형으로 또는 파일에서 파일 이름을 읽는 것인데, 이는 사용자가 올바른 파일 이름을 제공하기 위해 쉘의 파일 이름 와일드카드 및/또는 탭 완성 기능을 사용할 수 없기 때문에 사용자에게 어색합니다. 일부 파일 이름을 대화형으로 입력하는 것이 불가능할 수도 있습니다.


네가 원한다면특징텍스트 파일의 단어, 문자 및 줄 수를 세면 이 wc유틸리티가 해당 작업을 수행합니다.

$ wc .zsh_history
    7824   35317  333801 .zsh_history

위의 예에서 파일에는 .zsh_history7824줄, 35317단어, 333801문자가 있습니다.

시스템을 확인하십시오 man wc.

관련 정보