嗨,能不能有人帮我做一个无限循环,来接受新的论点。
是否有一个读取命令,每个空格作为一个新参数,就像命令行那样。似乎所有的一切都成了一场大争论
我有一个脚本,当调用它时它进入一个无限循环。
第一个参数将决定调用另一个脚本的情况,然后第二个参数将被发送到该脚本。
然后我想再次循环,并要求用户在同一行中再次输入两个参数。第一个决定案子,第二个。。。
不过,我希望这些命令像命令行一样在一行中。
我相信read命令会将整行设置为一个变量,而我想再次执行$1和$2。
我提供了一些代码来描述我的问题,提前谢谢
我基本上需要一个read命令,它将分裂成像命令行这样的参数。

while true :
do

        # make decision using case..in..esac
        choice = $1
        case $choice in
                create)

                        ./create.sh $2
                        ;;
                add)
                        ./add.sh $2

                        ;;
                    *)
                        echo "Error: Invalid option..."
                        ;;
        esac
done

最佳答案

你想“向用户询问两个参数”,至少有三种方法,如下所示。我想你应该把这些放在do之后和case之前。
就像@John1024说的,

read choice second_arg

将填写$choice$second_arg。编辑直接使用choice,您就不需要choice="$1"
此序列:
read
set -- $REPLY

将替换$1$2。。。命令行中的单词。然后您仍然可以像使用它一样使用choice="$1"
要保留命令行参数并更通用,
read -a inputs

将单词读入数组,因此您可以将它们引用为inputs${inputs[0]}。。。不管有多少投入。那你就可以用
choice="${inputs[0]}"

而不是${inputs[1]}

关于linux - Bash While循环新参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40311390/

10-09 06:04
查看更多