有没有一种很好的方法来检查数组是否在 bash 中有一个元素(比循环更好)?
或者,是否有另一种方法来检查数字或字符串是否等于一组预定义常量中的任何一个?
在 Ansible 中从 shell 命令输出生成一个数组,类似于以下内容:
foo: [value0, value1, value2, value3]
Run Code Online (Sandbox Code Playgroud)
现在,根据 shell 命令的输出, 的元素数量foo可能会有所不同。
然后我生成一个 jinja2 模板来显示:
foo[0] will return value0
foo[1] will return value1
...
Run Code Online (Sandbox Code Playgroud)
我如何确定存储了多少元素foo?
我有 220 张相同高度和宽度的 png 图像,具有以下命名约定:
A1.png, A2.png, ... V9.png, V10.png
Run Code Online (Sandbox Code Playgroud)
我需要将它们合并成一个巨大的图像,A1 是左上角,字母水平增加,数字垂直增加。有没有一种方法可以做到这一点,而不需要繁琐地将它一块一块地放在一起?
我在 Excel 中有两列,“ROSTER”和“PRESENT”,如下所示:

是否有实现“NOT HERE”列的公式?我尝试使用VLOOKUP()和https://superuser.com/a/289653/135912无济于事 =(
任何帮助,将不胜感激!
谢谢!
有没有办法使用数组公式或其他一些功能来本质上拥有一个 excel 函数,这意味着。
=Countblank({A1,A4:A6,A112:127,B29:B38}) etc.
Run Code Online (Sandbox Code Playgroud)
本质上,我想引用您通常会在其中键入连续范围的多个位置。如果确实可能,则首选非 VBA。
我知道我可以使用
=Countblank(A1)+Countblank(A4:A6)+Countblank(A112:127)+Countblank(B29:B38)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,但由于显而易见的原因,它并不理想。
谢谢大家 :)
worksheet-function array microsoft-excel microsoft-excel-2010
我基本上要解决的问题是一个 VLOOKUP,它正在检查 A:E 列的值,如果在其中任何一个中找到它,则返回 F 列中保存的值。
由于 VLOOKUP 无法完成任务,我研究了 INDEX-MATCH 语法,但我正在努力弄清楚如何为一组值而不是单列完成此操作。我在下面构建了一个示例数据集来尝试解释这一点:
A------B------C------D------E------F
1------2------3------4------5------Apple
12-----13--------------------------Banana
14---------------------------------Carrot
Run Code Online (Sandbox Code Playgroud)
如果被检查的单元格包含 1、2、3、4 或 5,则公式的结果应该是 Apple。如果是 12 或 13,它应该返回 Banana,最后如果它包含 14,它应该返回 Carrot。
后半部分来自这样一个事实,即被引用的单元格不是单个值,而是一个完整的表格本身。因此,根据不同的值,将多次完成此搜索。
因此,为了演示,在其他地方(如下所示)还有另一个表,其中包含这些值。我试图让系统识别哪一行,以及与每列关联的“Apple、Banana、Carrot”值中的哪一个。表格如下所示
你好 - - - - - -
1------(苹果)----
2------(苹果)----
12-----(香蕉)-
等等。 - - - - - - - - -
括号中的值是公式计算这些值的地方。
我在我自己的网站上有一长串 url,列在一个回车分隔的文本文件中。所以例如:
我需要生成许多并行 wget 来两次访问每个 URL,检查并检索特定的标头,然后将结果保存在一个数组中,我想在一个不错的报告中输出该数组。
通过使用以下 xargs 命令,我获得了我想要的部分内容:
xargs -x -P 20 -n 1 wget --server-response -q -O - --delete-after<./urls.txt 2>&1 | grep Caching
Run Code Online (Sandbox Code Playgroud)
问题是如何运行此命令两次并存储以下内容:
所以输出应该是这样的:
=====================================================
http:/www.mysite.com/url1.html
=====================================================
First Hit: Caching: MISS
Second Hit: Caching: HIT
=====================================================
http:/www.mysite.com/url2.html
=====================================================
First Hit: Caching: MISS
Second Hit: Caching: HIT
Run Code Online (Sandbox Code Playgroud)
等等。
只要标题与 URL 相关联,URLS 出现的顺序就不一定是一个问题。
由于 URL 的数量,我需要并行而不是串行访问多个 URL,否则将花费太长时间。
诀窍是如何获得多个并行 wget 并以有意义的方式存储结果。如果有更合乎逻辑的方法(也许写入日志文件?)
有没有 bash 大师对我如何继续提出任何建议?
我正在尝试编写一个 ZSH 脚本,它将迭代一系列包含空格的字符串。
首先,我将set -A数组:
set -A a "this is" "a test" "of the" "emergency broadcast system"
从这里开始,我将尝试使用基本循环对其进行迭代for,确保将数组用引号括起来以处理空格:
for i in "$a"; do echo "${a[$i]}"
但是,这会引发以下错误:
zsh: bad math expression: operator expected at `is a test ...'
我已经玩了一段时间,甚至尝试将分隔符设置为“\n”,因为我认为问题是数组使用空格作为分隔符,但甚至这样做:
a=(IFS=$'\n';"this is" "a test" "of the" "emergency broadcast system")
其次是:
for i in "$a"; do echo "${a[$i]}"; done
产生相同的 ZSH 错误。
我在路径中选择了 Nemo 中的 4 个文件/home/myUsername/.local/share/nemo/scripts/Folder with spaces/。Nemo 将文件路径存储在环境变量中NEMO_SCRIPT_SELECTED_FILE_PATHS。
(正如您在glenn jackman下面的答案中所见,NEMO_SCRIPT_SELECTED_FILE_PATHS包含一个以换行符分隔的文件路径列表。)
为什么是“是啊!” 不是在每个文件路径行之后打印?我怎样才能做到这一点?(这个问题可能很烦人,因为我最初认为这个文件路径列表是一个数组,但显然不是。)
脚本
#!/bin/bash
for i in "${NEMO_SCRIPT_SELECTED_FILE_PATHS[@]}"
do
echo "$i"
echo "Yeah!"
done
Run Code Online (Sandbox Code Playgroud)
输出
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script1
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script2
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script3
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script4
Yeah!
Run Code Online (Sandbox Code Playgroud) 我想编写一个返回数组大小的公式。就像是
size(A1:A50)
Run Code Online (Sandbox Code Playgroud)
或许,这看起来很奇怪;但当我在前 50 行中插入一些新行并且我的公式自动更新时,它会帮助我;但如果我写的是 50 而不是(比如说)尺寸(A1:A50),它不会自动更新,这给我带来了问题。