질문
이 스크립트가 작동하고 파일이 처리되는 동안 진행률 표시줄( BBC.pdf
) 을 표시하려면 무엇을 입력해야 합니까? 문제는 응답하는 동안 진행률 표시줄을 표시하는 대신 스크립트를 사용하여 명령을 실행하는 것에 관한 것입니다.
진행률 표시줄 스크립트
#!/bin/sh
cp_p()
{
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}
내가 시도한 것
sudo ./cpp.sh /home/user1/Downloads/BBC.pdf /home/user1/
sudo cp ./cpp.sh /home/user1/Downloads/BBC.pdf /home/user1/
그리고cpp.sh
스크립트에 있어요~/scripts
목차
답변1
스크립트가 이름이 지정된 함수를 정의 cp_p
하지만 실행하지는 않습니다. 함수 정의를 제거하고 코드를 직접 사용하세요.
#!/bin/sh
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk …
함수 정의를 유지하려면 마지막에 실행하세요. 여기서는 유용하지 않지만 여러 기능이 있는 대규모 스크립트에서는 유용할 수 있습니다.
#!/bin/sh
cp_p()
{
…
}
cp_p "$@"
어느 쪽이든 스크립트를 실행하려면 간단히 실행하면 됩니다.
./cpp.sh /home/user1/Downloads/BBC.pdf /home/user1/
cpp.sh
파일이 현재 디렉터리에 있다고 가정합니다 .
#!
게시물의 첫 번째 줄 앞에 공백이 있다는 점에 유의하세요. 복사-붙여넣기 오류인 경우 문제를 해결하세요. 스크립트에 공백이 있으면 제거하십시오. #!
스크립트의 처음 2바이트여야 합니다.