- Since we used the $1 variable not $@, the function will return the first element only.
- 50. Yes, it's a global variable, but because we printed the value before the function call, the variable isn't affected.
- Missing brackets () or adding the keyword function before the function name. It should be written like this:
clean_file() { is_file "$1" BEFORE=$(wc -l "$1") echo "The file $1 starts with $BEFORE" sed -i.bak '/^\s*#/d;/^$/d' "$1" AFTER=$(wc -l "$1") echo "The file $1 is now $AFTER" }
- The problem is in the function call. We shouldn't use brackets () during a function call. Brackets should only be used in function definitions. The correct code will be like this:
#!/bin/bash myfunc() { arr=$@ echo "The array from inside the function: ${arr[*]}" }
test_arr=(1 2 3) echo "The origianl array is: ${test_arr[*]}" myfunc ${test_arr[*]}