저는 Gnu/Linux 및 bash를 처음 사용하며, 실패한 경우 간단한 bash 스크립트를 작성하여
date +%H
미리 정의 된 시간 범위 내에 있습니다.
예:
hour='date +%H'
if [[ $hour -ge 12 ]] || [[ $hour -lt 19 ]]
then echo "Good afternoon!"
이에 대한 행을 분리하려고하면 "정수 표현식이 예상 됨"이됩니다.
test $hour -ge 12
$hour 반환 값을 정수로 사용하거나 문자열로 처리하는 간단한 것이 누락 된 것 같습니다.
편집하다: 완성 된 스크립트는 다음과 같습니다. 기본 수준에서 필요한 개선 사항이 있습니까?
!#/bin/bash
name=$(whoami)
hour=$(date +%H)
if [ $hour -lt 5 ] || [ $hour -ge 19 ]
then xmessage -center "Good evening $name!"
elif [ $hour -ge 5 ] && [ $hour -lt 12 ]
then xmessage -center "Good morning $name!"
else xmessage -center "Good afternoon $name!"
fi
- 답변 # 1
- 답변 # 2
Bash는 또한
((...))
산술 연산을위한 구문. 코드는 다음과 같이 다시 작성할 수 있습니다.#!/bin/bash declare -i hour=$(date +%k) if (( hour > 12 && hour < 19 )) then printf "Good afternoon\n" fi
라인
declare -i hour=$(date +%k)
변수가hour
는 산술 정수로 처리되며 앞에 0이없는 현재 시간 (0-23)을 할당합니다.
관련 자료
- winscp get 명령을 사용하여 날짜 범위 내에서 파일을 다운로드하는 방법
- montecarlo - Python의 Discrete Uniform Distribution을 사용하여 0-1 범위의 숫자를 1-52 범위로 변환하려면 어떻게해야합니까?
- OpenCV 및 Python에서 범위 슬라이더 (트랙 바)를 사용하여 마스크 이미지 만들기
- python - PySpark에서 현재 및 전날과 데이터 비교
- git - GUI를 사용하여 두 개의 다른 커밋에서 파일을 비교하는 방법
- awk - 기본 제공 UNIX 도구 중 하나를 사용하여 텍스트 범위 선택
- python - gspread acell을 사용하여 특정 시트 범위 가져 오기
- azure sql database - 하나의 쿼리를 사용하여 두 번째 쿼리의 범위 설정
- PowerShell을 사용하여 VM 내부에서 현재 Azure VM에 대한 세부 정보 가져 오기
- c++ - UINT32_MAX를 사용한 범위 조건
- dart - Flutter에서 타임 스탬프를 현재 시간과 비교하는 방법
- php - 날짜의 날짜 만 추출하여 현재 날짜와 비교
- python 3.x - urllibrequest를 사용하여 x-api-key 헤더 범위가있는 URL 쿼리
- PHP | 날짜를 가져 와서 이번 달과 비교하고 이전 달로 변환
- visual studio code - vscode를 사용하여 두 프로젝트 비교
- Python을 사용하여 두 파일 MD5 선택 및 비교
리터럴 문자열을 할당하고 있습니다.
date +%H
변수에hour
.그것을 실행하려면
date
명령을 지정하고산출그것의hour
, 명령 대체를 사용하십시오.또는 최신 릴리스의
bash
쉘 (4.2+),사용하지 않고 똑같은 일을 할 것입니다.
date
조금도.또한
fi
그것으로 갈if
그리고 사용&&
( "and") 대신||
( "또는") 올바른 논리를 얻으려면 :나는 표준을 사용하고있다
[ ... ]
대신 테스트bash
쉘 자신의[[ ... ]]
여기에서 테스트하여$hour
해석된다 (에 의해 도입 된 산술 문맥에서-ge
과-lt
테스트)를 유효하지 않은 8 진수 (08
과09
).사용할 필요가 있다고 생각되면
[[ ... ]]
당신은 시험 할 수 있습니다${hour#0}
수정되지 않은 값 대신$hour
문제를 피하기 위해. 의 가치${hour#0}
다음과 같을 것입니다$hour
그러나 단일 선행0
제거되었습니다.