#!/bin/bash
# Make a txt copy of any html files
for value in $1/*.html
do
if [[ $value == *.html ]]; then
cp $value $1/$( basename -s .html $value ).txt
fi
done
错误: cp:无法统计'/.html':没有此类文件或目录 cp:无法访问“ index.html / .txt”:不是目录
答案 0 :(得分:1)
以下语句中的$1
是第一个命令行参数。
$1/*.html
在您的代码中,期望包含HTML文件的父目录名。假设您的父目录为/home/user/my_html_files
,那么如果将此参数作为命令行参数传递,则将考虑该目录中的所有HTML文件。
# ./convert_html_to_txt.sh /home/user/my_html_files
以上内容将在您的代码中变成/home/user/my_html_files/*.html
。如果您的HTML文件位于当前目录中,则只需传递.
作为命令行参数(.
代表当前目录)
答案 1 :(得分:0)
首先,您需要将目录名称(具有完整路径)传递给脚本,其次,因为您仅循环遍历目录中的HTML文件,因此无需再次进行检查,而是可以将检查条件放在其副本上是否成功复制为.txt
。我相信您很可能正在寻找这种解决方案。
cat script.ksh
for value in $1/*.html
do
temp=${value%.*}
echo cp "$value" "$1/$temp.txt"
if [[ $? -eq 0 ]]
then
echo "File named $value copied successfully to "$value" "$1/$temp.txt"
else
echo "Please check file named $value NOT copied to "$value" "$1/$temp.txt"
fi
done
然后以script.ksh
的身份运行script.ksh "/directory_name/with_full_path"
。另外,我已将echo
放在cp
命令之前,因此一旦您看到命令通过上述脚本正确打印后,就可以将其删除。