首页 > 解决方案 > 参数被触发,即使它是可选的并且在 getopts 中提到

问题描述

我编写了一个脚本myscript,它对特定类型的文件执行操作。但是,有一个选项可以使用 -d 显示文件名。如果我没有提到

$ myscript -d

也有人说,无效的文件路径(因为该文件应该在 my 对其执行操作之后进行 file_evaluate script),但即使未提及,也会触发 -d 。我该如何解决这个问题?帮忙。谢谢。

myscript.sh:

#!/bin/zsh
echo "Enter source directory: "
read directory
echo
echo "Add a file (with path): "
read file
echo
while getopts ":rd" cal; do
case "$cal" in
r) echo "Renaming..."
echo
;;
d) echo "Displaying the Renamed files.."
echo
;;
*) echo "Invalid option: $OPTARG"
;;
esac
done
shift $((OPTIND -1)) 
echo

find . "*.txt" -print0 | while read -d $'\0' file
do
anothescript -r "$file" -d 
done
echo "done..."

标签: parameter-passingzshgetopts

解决方案


推荐阅读