问题
我必须输入什么才能让该脚本工作并在处理文件时显示进度条 ( 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
位于当前目录中。
#!
请注意,在您的帖子中,第一行之前有一个空格。如果这是复制粘贴错误,请解决您的问题。如果脚本中存在空格,请将其删除:#!
必须是脚本的前两个字节。