I'm trying to write a shell script, and to make it more or less readable, i decided to bring a part of my commands into environment variables:
#!/bin/bash
# Variables
name_expression="-type d \( -name .folder1 -o -name .wildcardfolder* -o -name .folder2 \)"
# Commands
find /root/ -maxdepth 1 "$name_expression" -execdir rm -rf {} \;
find /home/ -maxdepth 2 "$name_expression" -execdir rm -rf {} \;
The problem is that if i try to run this shell, many symbols are wrapped with quotes:
bash -x ./my_shell.sh
+ name_expression='-type d \( -name .android -o -name .AndroidStudio* -o -name .gradle \)'
+ find /home/ /root/ -maxdepth 2 '-type d \( -name .folder1 -o -name .wildcardfolder* -o -name .folder2 \)' -execdir rm -rf '{}' ';'
find: unknown predicate `-type d \( -name .folder1 -o -name .wildcardfolder* -o -name .folder2 \)'
Is there any way to pass this variable without being modified?
*
in there is going to be dangerous. – Wildcard Sep 06 '17 at 21:50