android - 在运行时传递参数时使用 getopt(s) 运行脚本的特定部分

标签 android bash shell getopt getopts

我写了一个很长的 bash 脚本,用于在 android 上配置 SSH daemom 等。问题是,它变得太长了,有时其他用户或我可能只想配置脚本必须提供的某些方面。我不想在每次运行时都检查整个脚本,而是想添加一些选项来指示将要运行的内容,但在未指定任何内容时仍然能够运行整个脚本。

类似于:

myscript -d -o -p

或者

myscript -dop    

可以找到脚本here .我认为在这里发布太长了。

基本上它像这样分成 5 个 block :

#!/system/xbin/bash

echo "---SECTION-ONE---"

read
if test then  

while true
do

我查找了使用 getopts 的方法,但是如果没有一个与我正在做的事情相匹配的例子,我还不能完全理解它。这就是我在这里发帖的原因 ;) 一如既往地感谢您的任何意见。

最佳答案

您可以将脚本的不同主体分解为可在出现选项时调用的函数。

#!/bin/bash

printing_stuff (){
    echo "---SECTION-ONE---"
}

test_input (){
    read -p "Enter something: " input
    if [[ $input == something ]]; then
        echo "test successful"
        # do some stuff
    fi
}

body_loop (){
    while true; do
        echo "this is the loop"
        # some stuff
        break
    done
}

if [[ $@ ]]; then
    while getopts "dop" opt; do
        case $opt in
            d)
                printing_stuff
                ;;
            o)
                test_input
                ;;
            p)
                body_loop
                ;;
            \?)
                ;;
        esac
    done
else
    printing_stuff
    test_input
    body_loop
fi

[[ $@ ]] 测试仅在脚本参数存在时运行 getopts 循环,否则运行所有内容。

关于android - 在运行时传递参数时使用 getopt(s) 运行脚本的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558103/

相关文章:

bash - 在 su 命令中运行 bash 函数

shell - 如何按文件大小排序查找结果

android - 以编程方式将软键盘更改为 alt 显示

linux - Ubuntu 中的 Terraform 路径问题

linux - 在目录中一个一个地循环文件,并在屏幕上显示对它们执行命令的结果

linux - 如果关闭时间太长,bash 会终止进程

linux - 归档 Shell 脚本

android - 耳机和扬声器同时输出音频

android - ObjectAnimator 不淡入

java - Android使用camera2复制内置视频录制质量和帧率