我正在开发的Java Swing GUI需要根据程序中生成的x和y坐标绘制2D图形.
是否有Swing组件?
或者是否有任何其他开源软件包用于此目的?
最近,由于具有许多功能,我切换到zsh。我很好奇:是否有一种功能可以扩展通配符,以便每个匹配项只执行一次命令,而不是所有匹配项一次执行。
该命令ebook-convert input_file output_file [options]
仅接受一个输入文件。当我要转换多个文件时,我必须多次手动执行命令或使用循环,例如:
for i in *.epub; do
ebook-convert "$i" .mobi
done
Run Code Online (Sandbox Code Playgroud)
我想要的是一个通配符,其功能类似于循环,以便我可以保存一些击键。让说通配符?
。命令
ebook-convert ?.epub .mobi
Run Code Online (Sandbox Code Playgroud)
应该扩展到
ebook-convert 1stMatch.epub .mobi
ebook-convert 2ndMatch.epub .mobi
ebook-convert 3rdMatch.epub .mobi
...
Run Code Online (Sandbox Code Playgroud)
我接受了一个对我有用的答案(感谢Grisha Levit)。但是,如果您知道其他具有此功能的shell,比编写循环短的替代命令,甚至是用通配符扩展zsh的方法,您的答案都会受到欢迎。
在 bash 中,关联数组(也称为字典或哈希映射)是无序的。对于关联数组,a
我们可以列出带有 的所有键(也称为索引)和带有 的${!a[@]}
所有值${a[@]}
。我知道这些结构不会以固定的顺序展开。我想知道是否至少有一些保证。我找不到任何。然而,[ "${a[*]}" = ${a[*]} ]
在任何实施中都会失败似乎是不现实的。同样,它似乎${!a[@]}
以与${a[@]}
. 如果我们x
在位置n in找到键,${!a[@]}
那么我们也会${a[x]}
在位置n in找到值${a[@]}
。当然,我们假设和a
的扩展之间没有修改。${!a[@]}
${a[@]}
declare -A a=([x]=1 [y]=2 [z]=3)
printf %s\\n "${!a[*]}" "${a[*]}"
# As output I would expect one of the following blocks ...
# (corresponding keys and values are in the same column)
x y z x z y y x …
Run Code Online (Sandbox Code Playgroud) 在检查 shell 脚本时如何删除 shellcheck 的警告“SC2154”?
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
echo "proxy=$http_proxy" | sudo tee -a /etc/test.txt
Run Code Online (Sandbox Code Playgroud)
警告是“SC2154:引用了 http_proxy 但未分配。”
编辑:我想使用 sudo 将环境变量“http_proxy”写入 test.txt 文件。
我有一个任意字符串数组,例如a=(1st "2nd string" $'3rd\nstring\n' ...)
.
我想将这些字符串传递给将其参数解释为文件的命令,例如paste
.
对于固定数量的变量,我们可以使用流程替换
paste <(printf %s "$var1") <(printf %s "$var2") <(printf %s "$var3")
Run Code Online (Sandbox Code Playgroud)
但这只有在事先知道变量数量的情况下才有效。
对于数组a
,我们可以写一些相当安全的东西,比如
eval paste $(printf '<(printf %%s %q) ' "${a[@]}")
Run Code Online (Sandbox Code Playgroud)
出于兴趣:有没有办法在a
不使用的情况下处理替换每个条目eval
?请记住,a
的条目可以包含任何字符(除了\0
因为bash
不支持它)。
public static void main(String[] args) {
int [] newArray= new int [4];
int [] array = {4,5,6,7};
oddEven(array);
newArray[0] = array[0]+array[1]+array[2]+array[3];
newArray[1] = array[0]*array[1]*array[2]*array[3];
}
public static void oddEven(int [] oddEven) {
for (int i=0; i<oddEven.length; i++) {
// Cannot convert from int to boolean
if (oddEven[i] % 2)
}
}
Run Code Online (Sandbox Code Playgroud)
忽略我在这里要管理的内容.我只是好奇为什么它不接受这个for循环中的"if"语句.正如我所说,它"无法从int转换为boolean".为什么你认为这样说?
在我的程序中,我需要检查变量是否等于1,2或3,并根据结果执行不同的方法:
if (phase.equals("1")) {
PhaseOne.performPhase(inputParser.getSource(), inputParser.getTarget());
} else if (phase.equals("2")) {
PhaseTwo.performPhase(inputParser.getSource(), inputParser.getTarget());
} else {
PhaseThree.performPhase(inputParser.getSource(), inputParser.getTarget());
}
Run Code Online (Sandbox Code Playgroud)
这段代码非常简单和基本,但我真的不喜欢它.当然我可以使用切换条件,但在我看来,它会以不同的方式显示相同的基本功能.
我的问题是:有没有办法以优雅和可扩展的方式实现该功能?
仅供参考,我已经发布了这篇文章,但我没有找到适合我的问题的答案.
我需要编写一个 bash 脚本,使用 imagemagick 注释给定的图像。问题是,该图像可以是任何大小,并且其注释在任何图像上看起来都应该几乎相同。
任何图像上的输出结果都应如下所示:
所以我想弄清楚以下几点:
我试图将命令的输出放入数组,为此尝试以下操作:
#!/bin/sh
cmd=($(date +%s;sleep 5; date +%s))
start_time=$cmd[0]
end_time=$cmd[1]
echo $start_time
#EOF
Run Code Online (Sandbox Code Playgroud)
我期望echo $ start_time给我开始时间,但它会显示以下内容:
1572443382 1572443386 [0]
无法切换到bash shell,只能访问sh