Цитаты - ваши друзья
Вы должны заключать переменные в кавычки, и вам также следует использовать тестовую конструкцию Bash, если переносимость не является проблемой. С вашим кодом могут быть и другие проблемы, но этот рефакторинг должен решить проблему, о которой вы конкретно спрашиваете.
#!/bin/bash
x="$1"
execute () {
if [[ -n "$x" ]]; then
"$@"
fi
}
for count in {1..4}; do
execute echo "$count"
echo $(hostname)
done
В зависимости от вашего имени хоста это будет примерно так:
1
localhost.local
2
localhost.local
3
localhost.local
4
localhost.local