【发布时间】:2021-06-23 15:42:02
【问题描述】:
我当前的 Bash 脚本如下所示。到目前为止它正在工作,除了我不知道如何制作它,所以两个选项 -f 和 -o 一起工作:
- -o FILE 选项显示最相关的信息 在作为参数传递的文件中(如果文件不存在,则必须显示错误消息)
- 选项 -f KEYWORD 显示包含 KEYWORD 的行 从一个文件。此选项必须与 -o 选项一起使用
感谢您的意见
#!/bin/bash
function s_func()
{
filename="$1";
echo "when you're done saving information please write 'exit'"
script $filename.txt
}
function o_func()
{
filename="$1"
dest='/home/eya/'
if [ -f "$filename".txt ]; then
cat $filename.txt
else echo "file does not exist"
fi
}
function f_func()
{
keyword="$1"
filename="$2"
grep $keyword $filename.txt
}
while getopts ":s:o:f:" opt; do
case $opt in
s) s_func "$OPTARG";;
o) o_func "$OPTARG";;
f) f_func "$OPTARG";;
\?)echo "wrong option";exit 1;;
esac
done
shift $((OPTIND -1))
【问题讨论】:
-
你之前没有发布过这段代码(我不会说“问这个问题”,因为这更像是代码转储而不是当前状态下的问题)?跨度>
-
请尝试将您的代码转换为minimal reproducible example——最短的代码,在不更改运行时演示特定问题。 (同样,预期和实际输出都应显示在问题本身中)。
-
顺便说一句,注意您如何在一个地方使用
filename,而在另一个地方使用file?如果你让f_func写入一个全局变量(默认情况下,所有变量在 bash 中都是全局的),并且s_func从 那个全局变量中读取......好吧,你就在那里(只要因为它们按预期顺序使用)。