相关疑难解决方法(0)

扩展全局模式的最佳方法?

我需要以编程方式将 glob 模式(如../smth*/*, 或/etc/cron*/)扩展到文件列表中。最好的方法是什么?

bash wildcards

42
推荐指数
2
解决办法
3万
查看次数

如何遍历逗号分隔的列表并为每个条目执行命令

我已经给出了一个命令,该命令输出变量中 autosys 作业的逗号分隔列表$all_jobs

box=box-of-jobs;all_jobs=$(jobscout -box $box | egrep "^\w+" | tr '\n' ','  | sed s/.$//); 
Run Code Online (Sandbox Code Playgroud)

我想为列表中的每个项目调用一个 sendevent 命令:

sendevent -verbose -S NYT -E JOB_OFF_HOLD -J $job --owner me
Run Code Online (Sandbox Code Playgroud)

例如,如果$all_jobs评估 job1,job2,job3

我想打电话

sendevent -verbose -S NYT -E JOB_OFF_HOLD -J job3 --owner me
sendevent -verbose -S NYT -E JOB_OFF_HOLD -J job2 --owner me
sendevent -verbose -S NYT -E JOB_OFF_HOLD -J job1 --owner me
Run Code Online (Sandbox Code Playgroud)

我确信我可以编写一个 ksh 脚本来循环执行,但是我知道使用 awk/sed 通常可以更快地编写这些东西,这两者我都不太熟悉,因此超出了我的 megre 技能。我正在使用 ksh(而不是 bsh)。

scripting ksh csv

4
推荐指数
1
解决办法
3万
查看次数

测试数组中是否存在重复值

我正在尝试找到一种简单的方法来测试数组中的重复值。能够识别具有重复项的特定行固然很好,但并非完全必要,但重要的一点是能够看到存在重复项。

我有一个数组,$key_array其中包含一些数字:

# echo ${key_array[@]}
1 2 3 4 3 3
Run Code Online (Sandbox Code Playgroud)

该数组可以有任意数量的数字,其中一些数字可能与其他数字重复。它们只是整数。(以 a 开头的数字0,例如03,根本不应该进入数组,但万一发生这种情况,捕获303作为彼此的重复项比将它们视为不同的数字更好。)

我需要确定这些数字是否重复。我想如果没有别的办法的话,这可以通过退出代码来完成。我所追求的是这样的:

if $(some command); then
 echo "Array contains duplicates."
 exit 1
fi
$(commands to run after duplicate check)
Run Code Online (Sandbox Code Playgroud)

最后的想法是,如果存在重复项,脚本会通知用户并退出(对于识别重复项在哪里并不是非常重要,只需告诉用户检查重复项就足够了),或者如果没有任何重复项,它继续运行并运行许多其他东西。

我怎样才能最好地完成这个任务?

shell scripting bash

2
推荐指数
1
解决办法
6630
查看次数

标签 统计

bash ×2

scripting ×2

csv ×1

ksh ×1

shell ×1

wildcards ×1