我需要以编程方式将 glob 模式(如../smth*/*
, 或/etc/cron*/
)扩展到文件列表中。最好的方法是什么?
我已经给出了一个命令,该命令输出变量中 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)。
我正在尝试找到一种简单的方法来测试数组中的重复值。能够识别具有重复项的特定行固然很好,但并非完全必要,但重要的一点是能够看到存在重复项。
我有一个数组,$key_array
其中包含一些数字:
# echo ${key_array[@]}
1 2 3 4 3 3
Run Code Online (Sandbox Code Playgroud)
该数组可以有任意数量的数字,其中一些数字可能与其他数字重复。它们只是整数。(以 a 开头的数字0
,例如03
,根本不应该进入数组,但万一发生这种情况,捕获3
和03
作为彼此的重复项比将它们视为不同的数字更好。)
我需要确定这些数字是否重复。我想如果没有别的办法的话,这可以通过退出代码来完成。我所追求的是这样的:
if $(some command); then
echo "Array contains duplicates."
exit 1
fi
$(commands to run after duplicate check)
Run Code Online (Sandbox Code Playgroud)
最后的想法是,如果存在重复项,脚本会通知用户并退出(对于识别重复项在哪里并不是非常重要,只需告诉用户检查重复项就足够了),或者如果没有任何重复项,它继续运行并运行许多其他东西。
我怎样才能最好地完成这个任务?