"이 파일이 실행될 때 다음을 수행 할 것이라는 파일에 다음 명령을 추가 :이 파일 표시)실행 중에 sh 표시 줄 수를 만드는 방법은 무엇입니까?
4 것은 X 선
5
)이 파일은 X 단어를 가지고 디스플레이가6)이 파일을 표시 할 때 x 바이트가
입니다. 나는 명령이 wc의 변종임을 알고 있지만 어떻게 그 명령을 스크립트에 추가 할 것인지를 알아낼 수는 없습니다.
"이 파일이 실행될 때 다음을 수행 할 것이라는 파일에 다음 명령을 추가 :이 파일 표시)실행 중에 sh 표시 줄 수를 만드는 방법은 무엇입니까?
4 것은 X 선
5
)이 파일은 X 단어를 가지고 디스플레이가6)이 파일을 표시 할 때 x 바이트가
입니다. 나는 명령이 wc의 변종임을 알고 있지만 어떻게 그 명령을 스크립트에 추가 할 것인지를 알아낼 수는 없습니다.
lines=$(wc -l $0)
echo This file has $lines lines
words=$(wc -w $0)
echo This file has $words words
bytes=$(wc -b $0)
echo This file has $bytes bytes
트릭을 수행해야합니다.
THANKYOU 정확히 내가 무엇을 찾고 있었는지 – codingchallenged
나는 프로그램이 사용자 입력을 요구하는 데 문제가있다. 나는 읽기 명령을 사용해야한다는 것을 알고 있지만, 스크립트를 어떻게 입력을 요구하는지 잘 모르겠다. – codingchallenged
bash process substitution을 사용하면 1 라이너입니다.
$ read lines words bytes filename < <(wc /path/to/file)
출력도 1 라이너이므로 원하는 경우 배쉬 (bash) 배열을 활용할 수 있습니다. 다음은 실제 예제 :
$ read -a arr < <(wc /etc/passwd);
$ declare -p arr
declare -a arr=([0]="96" [1]="265" [2]="5925" [3]="/etc/passwd")
$ unset arr[3]
$ printf 'lines: %d\nwords: %d\nbytes: %d\n' "${arr[@]}"
lines: 96
words: 265
bytes: 5925
POSIX 쉘에서
유사한 결과는 임시 파일을 사용하여 달성 될 수 :
$ tmp=$(mktemp /tmp/foo.XXXX)
$ wc /etc/passwd > $tmp
$ read lines words bytes filename < $tmp
$ rm $tmp
$ printf 'lines: %d\nwords: %d\nbytes: %d\n' "$lines" "$words" "$bytes"
lines: 96
words: 265
bytes: 5925
아니면 임시 파일없이 여기-문서로 데이터를 가져올 수 있습니다
$ read lines words bytes filename <<EOT
> $(wc /etc/passwd)
> EOT
(당신이 스크립트이를한다면 분명히, 당신은 대화 형 프롬프트를 제거 것입니다.)
다른 운영 체제와 쉘에서 일관되므로 printf
은 echo
이상으로 출력하도록 권장합니다. This excellent post은 몇 가지 고려 사항을 설명합니다.
스크립트 시작 부분에 간단히 마녀가 필요한 값을 계산하여 인쇄합니다. 또는 래퍼를 준비하면 스크립트 이름을 param으로 가져오고 그 값을 계산하여 해당 값을 인쇄 한 다음 스크립트를 실행합니다. – darvark
시도한 결과, 결과 및 찾고 있던 결과를 표시하십시오. 에 대한? 코드가 질문에 포함되지 않은 경우 코드를 수정하는 방법을 권장하는 것은 매우 어렵습니다. – ghoti