echo $Date
와 사이에 왜 이런 차이가 있습니까 echo "$(date +%s_%kh%M_le_%a_%d_%b_%Y)"
?
beginning=$(date +%s)
diff="0"
rest="$1"
tmp="0"
now="0"
Date=`date +%s_%kh%M_le_%a_%d_%b_%Y`
echo -n "$1"
while [ "$diff" -lt "$1" ]
do
let "now=$(date +%s)"
let "diff=now-beginning-1"
let "tmp=$1-diff"
if [ "$tmp" -lt "$rest" ]
then
echo
echo $Date
echo "$(date +%s_%kh%M_le_%a_%d_%b_%Y)"
let "rest=$1-diff"
echo -n ", $rest"
fi
done
echo ""
출력에서:
concatenatorus@gwenn-ha-du ~ $ countdown.sh 5
5
1425230747_18h25_le_dim._01_mars_2015
1425230749_18h25_le_dim._01_mars_2015
, 4
1425230747_18h25_le_dim._01_mars_2015
1425230750_18h25_le_dim._01_mars_2015
, 3
1425230747_18h25_le_dim._01_mars_2015
1425230751_18h25_le_dim._01_mars_2015
, 2
1425230747_18h25_le_dim._01_mars_2015
1425230752_18h25_le_dim._01_mars_2015
, 1
1425230747_18h25_le_dim._01_mars_2015
1425230753_18h25_le_dim._01_mars_2015
, 0
나는 사용한다:
echo $BASH
/bin/bash
답변1
차이점은 당신이 실행한다는 것입니다
Date=`date +%s_%kh%M_le_%a_%d_%b_%Y`
스크립트 시작 부분에. 해당 날짜/시간을...이라는 쉘 변수에 저장한 Date
다음 실행하십시오 .
echo "$(date +%s_%kh%M_le_%a_%d_%b_%Y)"
루프에서... 마지막 명령은 각 반복마다 새로운 시간 값을 쿼리하고 인쇄하며 echo $Date
항상 동일한 값을 인쇄합니다!
답변2
스크립트에서 Date=에 백틱을 사용하고 있습니다.date +%s_%kh%M_le_%a_%d_%b_%Y
그리고 echo 문에는 큰따옴표를 사용하세요. 스크립트에서는 동일한 결과가 생성됩니다.
백틱은 표현식을 평가하는 데에만 사용되며, 큰따옴표는 표현식을 평가하고 메시지를 표시하는 데 사용됩니다.
스크립트에 큰따옴표를 사용하든 백틱을 사용하든 상관없습니다.