String 需要Shell脚本帮助吗

String 需要Shell脚本帮助吗,string,shell,unix,String,Shell,Unix,我有一个特定的日期(一个人的生日)存储在一个文件中,例如01/02/1900。 我想知道这个人的年龄是否超过20岁。 我使用的是shell脚本。只是一个玩笑,但也许你可以从中得到你需要的:它从/path/to/file.txt中每行读取一个日期,并输出此人的年龄,以及年龄是小于还是大于20岁 #!/bin/bash while read DATE junk; do QDATE=$(echo "$DATE" | sed 's#/#%2F#g') ANS=$(curl -s "ht

我有一个特定的日期(一个人的生日)存储在一个文件中,例如01/02/1900。 我想知道这个人的年龄是否超过20岁。
我使用的是shell脚本。

只是一个玩笑,但也许你可以从中得到你需要的:它从
/path/to/file.txt
中每行读取一个日期,并输出此人的年龄,以及年龄是小于还是大于20岁

#!/bin/bash

while read DATE junk; do
    QDATE=$(echo "$DATE" | sed 's#/#%2F#g')
    ANS=$(curl -s "http://www.wolframalpha.com/input/?i=%28now+-+${QDATE}%29+in+years" | grep -Eo '"[0-9]+(\.[0-9]+)? years"')
    AGE=$(echo "$ANS" | sed -r -e 's/"//g' -e 's/ years//g' -e 's/\..+//g')

    if [ -z "$AGE" ]; then
        echo "$DATE: ERROR occured"
        continue
    fi

    if [ $AGE -ge 20 ]; then
        echo "$DATE ($ANS): Person older or equal to 20 years"
    else
        echo "$DATE ($ANS): Person younger than 20 years"
    fi
done < /path/to/file.txt
在with上(即在所有主要的Linux发行版上),您可以使用将两个日期转换为一个数字以进行比较:

#!/bin/bash

# Arguments: <age-limit> <birth-date>

LIMIT=$(date --date="$1 years ago" +%s)
BIRTH=$(date --date="$2" +%s)

if [[ "$BIRTH" -gt "$LIMIT" ]]; then
    echo "Birth-date less than $1 years ago"
else
    echo "Birth-date at least $1 years ago"
fi
#/bin/bash
#论据:
限制=$(日期--date=“$1年前”+%s)
出生=$(日期--date=“$2”+%s)
如果[[“$BIRTH”-gt“$LIMIT”]];然后
echo“出生日期不到1年前”
其他的
echo“出生日期至少1年前”
fi
请注意,日期字符串(如
01/02/1900
)与月/日订单不明确。在我的系统和语言环境中,日期假定月份早于日期-YMMV

#!/bin/bash

# Arguments: <age-limit> <birth-date>

LIMIT=$(date --date="$1 years ago" +%s)
BIRTH=$(date --date="$2" +%s)

if [[ "$BIRTH" -gt "$LIMIT" ]]; then
    echo "Birth-date less than $1 years ago"
else
    echo "Birth-date at least $1 years ago"
fi