我对Bash相当新,所以请原谅我,但我正在构建一个Bash脚本,可以接受可以有很多开关的用户输入命令。我需要编写一个从该用户提供的命令中提取特定数据的函数。
在" -mode"" -mode"之后,我似乎找不到拉出每个单词的方法。并将其推入某种数组或列表中。
以下是用户输入命令的示例:
/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
我试过摆弄awk -F" -mode" ' {print $ 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(){
}
答案 0 :(得分:2)
您可以在awk中使用angular.module('uvox-player').controller('PlaylistCoverController', function($scope, Api, $state, $q, $http, $mdToast, ngDialog, $stateParams) {
$scope.selectPlaylist($stateParams.id);
Api.getPlaylist($stateParams.id).then(function(data) {
$scope.cover = data.cover;
}, function(error) {
});
$scope.importCover = function(event) {
var file = event.target.files[0];
Api.postPlaylistCover($scope.selectedPlaylist, 'cover[file]', file).then(function(data) {
$state.reload();
}, function(error) {
});
}
变量告诉在获取RS
时将数据拆分为单独的记录:
-mode
填充数组:
s='/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'
printf '%s' "$s" | awk -v RS="-mode[[:space:]]*" 'NR>1'
FOO
BAR
BAZ
BAG
DAT
RAR
答案 1 :(得分:0)
我刚刚提出了与@anubhava基本相同的答案,但使用GNU grep而不是awk:
jsonObject.get("Name").toString();