파일의 총 단어, 문자 및 줄 수를 표시하는 쉘 스크립트를 작성해야 하는데 파일 이름이 "명령줄 인수로 제공됩니다." 이것이 무엇을 의미하며 어떻게 사용합니까?
답변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_history
7824줄, 35317단어, 333801문자가 있습니다.
시스템을 확인하십시오 man wc
.