我对Bash相当新,所以请原谅我,但我正在构建一个Bash脚本,它可以接受可以有很多开关的用户输入命令。我需要编写一个从用户提供的命令中提取特定数据的函数。Bash - 在自定义分隔符后保存字符串以分隔变量
我似乎无法找到一种方法来拉动“-mode”后面的每个单词并将其推入某种数组或列表中。
这里是用户输入的命令可能看起来像一个例子:我尝试过使用awk -F“ - 模式”摆弄
/home/custom/function/that/accepts/a/billion/switches random_info random_info2 -worker vendor_schmo -switch_one -anotherOne -more_switches -optionTwo -mode FOO -mode BAR -mode BAZ -mode BAG -mode DAT -mode RAR
“{打印$ 1}”,并没有奏效。任何意见将不胜感激!
这里是从脚本片段,拉这个信息:
manualRunMain(){
local command
manualRunHeaderPrint
echo
echo
echo
echo
lineBreakPrint
read -p "Enter your command here: " command
sleep .25
manualRun "$command"
}
manualRun(){
manualRunHeaderPrint
jobRunSubHeaderPrint
pullModeNames "$1"
}
pullModeNames(){
}
欢迎使用堆栈溢出,您能否在代码标记中添加样本预期输出? – RavinderSingh13
我不认为我需要任何输出,我只需要将每个“-mode”后面的每个单词都推送到一个数组中。我认为这足够了,我可以从那里拿走它。 –
一般来说,您应该考虑遵循[BashFAQ#35](http://mywiki.wooledge.org/BashFAQ/035)中给出的实践来满足您的特定目的。你的命令给出的参数列表是**不作为字符串传递 - 而是作为字符串数组传递 - 并将它看作是字符串意味着你采用了一堆错误(例如,你失去区分'-foo“bar baz”'和'-foo bar baz'的能力)。 –