嗨,能不能有人帮我做一个无限循环,来接受新的论点。
是否有一个读取命令,每个空格作为一个新参数,就像命令行那样。似乎所有的一切都成了一场大争论
我有一个脚本,当调用它时它进入一个无限循环。
第一个参数将决定调用另一个脚本的情况,然后第二个参数将被发送到该脚本。
然后我想再次循环,并要求用户在同一行中再次输入两个参数。第一个决定案子,第二个。。。
不过,我希望这些命令像命令行一样在一行中。
我相信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/