Чтобы получить представление о том, что на самом деле будет запускаться при eval некоторой строки, попробуйте сначала echo ее. eval -ing это похоже на копирование вывода echo в оболочку и выполнение этого:
echo "test2"="'Test Name's Test'"
test2='Test Name's Test'
Там есть три одинарные кавычки, которые никогда не запустятся. А так как вы не можете включить одиночные кавычки в Bash одиночных кавычек (она даже не поддерживает обратную косую черту вытекающей, в отличии от многих других языков), вы должны будете использовать двойные кавычки , если вы хотите eval что - то вроде этого:
echo "test2"="\"Test Name's Test\""
test2="Test Name's Test"
Но , как @daniel указал, eval ненужно. И вы ни в коем случае не должны использовать eval. Единственный случай, когда я видел полезный eval это вывод getopt.