Simple .sh script Write a SHELL script sumPairInt.sh that calculates and displays the sum of the digits in the even positions of a of a numeric value passed as an argument to the script. For example, the call sumPairInt.sh 234568 displays as result the value 16 : 3+5+8 = 16. Your script must validate the number of arguments and the type of argument (a positive integer). If the argument value is not valid, you must display the message indicating the correct use of the script and finish the execution. I currently have this code : # Check if the argument is a positive integer if ! [[ "$1" =~ ^[0-9]+$ ]]; then echo "Error: argument must be a positive integer" >&2 exit 1 fi # Initialize the sum to 0 sum=0 # Iterate through the digits of the argument in even positions for (( i=0; i<${#1}; i+=2 )); do # Extract the digit at position i digit=${1:i:1} # Add the digit to the sum sum=$((sum + digit)) done # Display the sum echo "Sum of the digits in even positions: $sum" However, the output is not the one that is desired. If for example I call sumPairInt.sh 123456789, the output is 9, when the desired output is supposed to be 20. (2 + 4 + 6 + 8). Please help
Simple .sh script
Write a SHELL script sumPairInt.sh that calculates and displays the sum of the digits in the even positions of a
of a numeric value passed as an argument to the script. For example, the call sumPairInt.sh 234568
displays as result the value 16 : 3+5+8 = 16. Your script must validate the number of arguments and the type
of argument (a positive integer). If the argument value is not valid, you must display the message indicating the correct use of the script and finish the execution.
I currently have this code :
# Check if the argument is a positive integer
if ! [[ "$1" =~ ^[0-9]+$ ]]; then
echo "Error: argument must be a positive integer" >&2
exit 1
fi
# Initialize the sum to 0
sum=0
# Iterate through the digits of the argument in even positions
for (( i=0; i<${#1}; i+=2 )); do
# Extract the digit at position i
digit=${1:i:1}
# Add the digit to the sum
sum=$((sum + digit))
done
# Display the sum
echo "Sum of the digits in even positions: $sum"
However, the output is not the one that is desired. If for example I call sumPairInt.sh 123456789, the output is 9, when the desired output is supposed to be 20. (2 + 4 + 6 + 8). Please help
Step by step
Solved in 3 steps with 2 images