Я пытаюсь создать функцию, в которой я передаю две даты в качестве аргументов и определяю их день недели.Я заставил его работать, скопировав и вставив процесс синтаксического анализа для обеих входных дат, но я пытаюсь сэкономить пространство, сжимая процесс в определенную функцию.Входные данные должны выглядеть так:
datematch.sh 01/03/1984 06/12/2008
Но я продолжаю получать сообщения об ошибках в виде строк:
./birthday_match.sh: line 9: ${$1:0:2}: bad substitution
./birthday_match.sh: line 9: ${$1:0:2}: bad substitution
The first person was born on:
The second person was born on:
Thus, they were born on the same day.
Как я заменяю неправильно?Полный код приведен ниже.
#!/bin/bash
var1=$1
var2=$2
if [ "$#" -ne 2 ]; then
echo "illegal number of birthdays"
else
function get_dayname ()
{
mo=${$1:0:2}
dy=${$1:3:2}
yr=${$1:6:4}
combo="${mo}${dy}0000${yr}"
fulldate="$(date $combo 2> /dev/null)"
wkdy=${fulldate:0:3}
eval $wkdy
}
first=$(get_dayname "$var1")
second=$(get_dayname "$var2")
echo "The first person was born on: $first"
echo "The second person was born on: $second"
if [ "$first" == "$second" ]; then
echo "Thus, they were born on the same day."
else
echo "Thus, they were not born on the same day."
fi
fi