在bash脚本编写中,将包含多个单词的文字引号的字符串转换为具有相同解析参数结果的数组的最佳方法是什么?
存在许多问题,都是采用规避策略来避免问题而不是寻找解决方案,这个问题提出了以下论点,并希望鼓励读者关注论点,如果你愿意接受它,就要参与挑战,找到最佳选择.解.
转换当前正在使用的现有脚本,以通过命名管道或类似流接收参数.为了最大限度地减少对开发人员控制之外的无数脚本的影响,决定不更改接口.现有脚本必须能够像以前一样通过新流实现传递相同的参数.
$ ./string2array arg1 arg2 arg3
args=(
[0]="arg1"
[1]="arg2"
[2]="arg3"
)
Run Code Online (Sandbox Code Playgroud)
$ echo "arg1 arg2 arg3" | ./string2array
args=(
[0]="arg1"
[1]="arg2"
[2]="arg3"
)
Run Code Online (Sandbox Code Playgroud)
正如Bash和Double-Quotes所指出的那样,传递给argv的文字引号不会像预期的那样被解析.
此工作台脚本可用于测试各种解决方案,它处理传输并制定可测量的响应.建议您专注于使用字符串作为参数获取的解决方案脚本,并且应该将$ args变量填充为数组.
#!/usr/bin/env bash
#string2arry
args=()
function inspect() {
local inspct=$(declare -p args)
inspct=${inspct//\[/\\n\\t[}; inspct=${inspct//\'/}; inspct="${inspct:0:-1}\n)"
echo -e ${inspct#*-a }
}
while read -r; do
# source the solution to turn $REPLY in $args array
source $1 "${REPLY}" …
Run Code Online (Sandbox Code Playgroud) 有无数的问题和答案Comparable
,Comparator
但似乎没有一个解决这个问题。
假设我有这个方法compare
,它接受 a 和 b 的任何Comparable
实现并返回比较 -1、0 或 1。
static <U,T extends Comparable<U>> int compare(T a, U b) {
return a.compareTo(b);
}
Run Code Online (Sandbox Code Playgroud)
与任何Comparable
东西一起工作都很好而且花花公子。整个企业的每个项目都采用该方法。
jshell> compare(1, 2);
$1 ==> -1
jshell> compare("id", "hi");
$2 ==> 1
Run Code Online (Sandbox Code Playgroud)
然后数据突然发生变化,我们开始遇到问题。
jshell> compare(null, "hi");
| Exception java.lang.NullPointerException: Cannot invoke "java.lang.Comparable.compareTo(Object)" because "<parameter1>" is null
| at compare (#1:2)
| at (#2:1)
jshell> compare(1, null);
| Exception java.lang.NullPointerException: Cannot read field "value" because "anotherInteger" is null …
Run Code Online (Sandbox Code Playgroud) 所以我一直在关注Google的教程,在Android模拟器上设置GCM演示应用程序(http://developer.android.com/guide/google/gcm/demo.html).我让服务器端工作 - 我有一个tomcat服务器显示"没有设备注册!" 在GCM演示页面上.我在带有目标Google API的Android模拟器上安装了客户端应用程序(试图让GCM在一个目标4.1上运行,只是吐出"不幸的是,GCM Demo已停止"每次运行应用程序时) - 应用程序运行成功,但它无法连接到服务器注册设备(它经历了所有5次尝试).我确实将SERVER_URL,SENDER_ID和api.key编辑为正确的值(我已经按照教程的每一步) - 我在这里缺少什么?模拟器上的浏览器似乎也能正常工作.
编辑:固定网址到演示 - 尼克