parameter-passing - 参数被触发,即使它是可选的并且在 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..."
解决方案
推荐阅读
- java - 可选 isPresent vs orElse(null)
- javascript - Chrome 扩展:点击 popup.js 激活并执行 background.js
- .net - 在工厂中订阅事件处理程序
- c# - LeanTween “from-to”值动画
- python - 从 Python 文件中获取变量并在 Flask 中显示
- mysql - 将结果加入新表?
- python - Python:如何获取每个项目在多个列表中的位置的统计信息?
- javascript - Promise.all 返回双精度数组
- java - 从树构建 JPA 规范
- azure-cosmosdb - 如何在折叠 gremlin 之后使用以前存储的项目