我有一個存儲在文件中的特定日期(一個人的生日),例如01/02/1900。 我想知道人的年齡是否大於20歲。 我正在使用shell腳本。需要Shell腳本幫助
-2
A
回答
0
在Linux與GNU coreutils(即在所有主要的Linux發行版),您可以使用date
這兩個日期轉換爲數字作比較:
#!/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
請注意日期字符串如01/02/1900
不明確w.r.t.月/日訂單。在我的系統和區域設置date
中假定該月的前一天是YMMV。
1
只是一個玩笑,但也許你可以得到你所需要的:它從/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
示例:
$ cat /path/to/file.txt
01/01/1900
08/11/1992
09/12/1992
$ bash test.sh
01/01/1900 ("112.9 years"): Person older or equal to 20 years
08/11/1992 ("20 years"): Person older or equal to 20 years
09/12/1992 ("19.92 years"): Person younger than 20 years
相關問題
- 1. 需要Shell腳本-awk選項幫助
- 2. 需要幫助TAR shell腳本
- 3. 在shell腳本中需要幫助
- 4. BASH需要腳本幫助
- 5. Bash腳本幫助需要
- 6. 組腳本幫助需要
- 7. 腳本需要幫助 - jquery
- 8. 需要幫助腳本
- 9. 腳本幫助需要
- 10. MySQL:需要腳本幫助
- 11. shell腳本幫助
- 12. Shell腳本幫助
- 13. shell腳本幫助
- 14. awk的shell腳本幫助
- 15. 需要shell腳本語法幫助「for循環和awk」
- 16. 需要幫助在IBM AIX中運行Shell腳本
- 17. 在打印特定菜單的shell腳本中需要幫助
- 18. shell腳本正則表達式幫助需要
- 19. 關於linux shell腳本需要的幫助很少
- 20. 的Linux腳本幫助需要
- 21. 我需要以下腳本的幫助
- 22. 我需要幫助與asp.net腳本
- 23. 需要我的bash腳本幫助
- 24. 需要幫助PHP頭像腳本
- 25. 需要幫助調試greasemonkey腳本
- 26. 需要幫助的PHP代理腳本
- 27. 簡單的Perl腳本幫助需要
- 28. 需要幫助建立的Linux腳本
- 29. 需要幫助寫bash腳本走動
- 30. 在Java腳本需要一個幫助
偉大的代表團在那裏使用WolframAlpha工作;) –
嘿,確實:-) –