«Лучшим» способом, который «лучше» в том, что он выполняется rm
реже, было бы использованиеxargs
:
{
for pm in "${pri[@]}"; do
printf '/primary/abc_monthly_%s_log.data\n' "$pm"
done
for sm in "${snd[@]}"; do
printf '/secondary/abc_monthly_%s_log.data\n' "$sm"
done
} | xargs rm
Это будет использовать циклы только как средство для создания путей. Эти пути затем передаются в xargs rm
, который будет выполнять rm
на как можно большем количестве из них одновременно. С примерами массивов, которые вы предоставили, он, вероятно, просто запуститrm
один раз .
То, как я написал это выше, предполагает, что ни один из компонентов пути не содержит буквальных символов новой строки или пробелов (, чего они не делают в этом примере ).
Команда sed -
sed -i 's~${my_str_join}~${my_str_new_join}~g' index1.html
использует одинарные -кавычки, которые предотвращают подстановку. Используйте двойные кавычки -там, где вы хотите заменить, например,
sed -i 's~${my_str_join}~'"${my_str_new_join}"'~g' index1.html