簡體   English   中英

bash 自動化用戶輸入<enter>在循環</enter>

[英]bash automate the user input <enter> in the loop

#!/bin/sh
dom=$(date '+%d') # 01-31, day of month
year=$(date '+%Y') # four-digit year
month=$(date '+%m') # two-digit month


nworkdays=0
for d in $( seq 1  $dom)
 do
    today=$(date -d "$year-$month-$d" '+%x') # locale's date representation (e.g. 12/31/99)
    dow=$(date -d "$year-$month-$d" '+%u')   # day of week: 1-7 with 1=Monday, 7=Sunday
    if [ "$dow" -le 5 ]  && grep -vq "$today"
    then
        workday=Yes
        nworkdays=$((nworkdays+1))


    else
        workday=

    fi
done
[ "$workday" ] && [ "$nworkdays" -eq 6 ] && echo "$nworkdays $today $workday"
~

我想執行腳本,但腳本進入循環並要求用戶輸入。

執行顯示工作日的預期結果

最好的問候, 沙里尼

正如@urbanespacemen 所述,請刪除 grep 命令

#!/bin/sh
dom=$(date '+%d') # 01-31, day of month
year=$(date '+%Y') # four-digit year
month=$(date '+%m') # two-digit month

nworkdays=0
for d in $( seq 1  $dom)
 do
    today=$(date -d "$year-$month-$d" '+%x') # locale's date representation (e.g. 12/31/99)
    dow=$(date -d "$year-$month-$d" '+%u')   # day of week: 1-7 with 1=Monday, 7=Sunday
    if [ "$dow" -le 5 ]
    then
        workday=Yes
        nworkdays=$((nworkdays+1))

    else
        workday=

    fi
done

[ "$workday" ] && [ "$nworkdays" -eq 6 ] && echo "$nworkdays $today $workday"

現在應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM