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

Programming with Microsoft Visual Basic 2017
8th Edition
ISBN:9781337102124
Author:Diane Zak
Publisher:Diane Zak
Chapter7: String Manipulation
Section: Chapter Questions
Problem 10E
icon
Related questions
Question

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

Expert Solution
steps

Step by step

Solved in 3 steps with 2 images

Blurred answer
Knowledge Booster
File Input and Output Operations
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Programming with Microsoft Visual Basic 2017
Programming with Microsoft Visual Basic 2017
Computer Science
ISBN:
9781337102124
Author:
Diane Zak
Publisher:
Cengage Learning
Microsoft Visual C#
Microsoft Visual C#
Computer Science
ISBN:
9781337102100
Author:
Joyce, Farrell.
Publisher:
Cengage Learning,
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT