Bash getopts 选项与另一个
Bash getopts option with another
我当前的 Bash 脚本如下所示。到目前为止它正在工作,除了我不知道如何制作它所以两个选项 -f 和 -o 一起工作:
- 用于显示最相关信息的 -o FILE 选项
在作为参数传递的文件中(如果文件不存在,则必须显示错误消息)
- 选项 -f KEYWORD 显示包含要输入的 KEYWORD 的行
从一个文件。该选项必须与-o选项一起使用
感谢您的任何意见
#!/bin/bash
function s_func()
{
filename="";
echo "when you're done saving information please write 'exit'"
script $filename.txt
}
function o_func()
{
filename=""
dest='/home/eya/'
if [ -f "$filename".txt ]; then
cat $filename.txt
else echo "file does not exist"
fi
}
function f_func()
{
keyword=""
filename=""
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))
试试这个:在处理命令行选项时,只收集变量。
仅在 解析选项后 对这些变量进行操作。
declare f_arg o_arg s_arg
while getopts ":s:o:f:" opt; do
case $opt in
s) s_arg=$OPTARG ;;
o) o_arg=$OPTARG ;;
f) f_arg=$OPTARG ;;
esac
done
shift $((OPTIND -1))
if [[ -z $o_arg ]] || [[ -z $f_arg ]] || [[ -z $s_arg ]]; then
echo "ERROR: Options -s, -o and -f are required." >&2
exit 1
fi
# Now you can do stuff in a specific order.
o_func "$o_arg"
f_func "$f_arg"
s_func "$s_arg"
我当前的 Bash 脚本如下所示。到目前为止它正在工作,除了我不知道如何制作它所以两个选项 -f 和 -o 一起工作:
- 用于显示最相关信息的 -o FILE 选项 在作为参数传递的文件中(如果文件不存在,则必须显示错误消息)
- 选项 -f KEYWORD 显示包含要输入的 KEYWORD 的行 从一个文件。该选项必须与-o选项一起使用
感谢您的任何意见
#!/bin/bash
function s_func()
{
filename="";
echo "when you're done saving information please write 'exit'"
script $filename.txt
}
function o_func()
{
filename=""
dest='/home/eya/'
if [ -f "$filename".txt ]; then
cat $filename.txt
else echo "file does not exist"
fi
}
function f_func()
{
keyword=""
filename=""
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))
试试这个:在处理命令行选项时,只收集变量。 仅在 解析选项后 对这些变量进行操作。
declare f_arg o_arg s_arg
while getopts ":s:o:f:" opt; do
case $opt in
s) s_arg=$OPTARG ;;
o) o_arg=$OPTARG ;;
f) f_arg=$OPTARG ;;
esac
done
shift $((OPTIND -1))
if [[ -z $o_arg ]] || [[ -z $f_arg ]] || [[ -z $s_arg ]]; then
echo "ERROR: Options -s, -o and -f are required." >&2
exit 1
fi
# Now you can do stuff in a specific order.
o_func "$o_arg"
f_func "$f_arg"
s_func "$s_arg"