[mdlug] Extracting the day of the Week in BASH

Aaron Kulkis akulkis3 at hotpop.com
Sat Mar 10 06:28:41 EST 2007


Robert Adkins wrote:
> 
> Daniel Hedlund wrote:
>> Ingles, Raymond wrote:
>>   
>>>> From: Robert Adkins
>>>>       
>>>>     Anyone know either the variable that returns the actual day of the 
>>>> week or a very short script to extract the day of the week?
>>>>       
>>>  date | cut -d" " -f 1
>>>     
>> Be careful about using "date" this way (or with +%a or +%A) to extract 
>> the day of the week if you're going to compare it against something.  I 
>> believe just running "date" will grab the date based on the current 
>> locale.  If your script might get run in an environment where the locale 
>> is set to another language, you could get something unexpected.  For 
>> example, if you're doing any comparisons in your script such as to only 
>> do something on Tuesday, you might write:
>>
>> if [ "$(date +%A)" = "Tuesday" ]; then
>>      echo "today is Tuesday..."
>> fi
>>
>> This could cause a problem if the locale returns the day of the week in 
>> a slightly different format.  In this circumstance, you would probably 
>> want to use +%u for extracting the day of the week as a number.  I 
>> believe this option is hard-coded to start on Monday irrespective of locale:
>>
>> if [ $(date +%u) -eq 2 ]; then
>>      echo "today is Tuesday...";
>> fi
>>
>> Let me know if I'm mistaken.
>>
>> Cheers,
>>
>> Daniel Hedlund
>> daniel at digitree.org
>>   
>     Thanks for your concern.
> 
>     This script is special purpose for one environment. In order to use 
> it in another environment, I would have to edit it, at least slightly. 
> Which is why I am fully commenting the script as I create/build it.
> t

Use numeric day of the week or logic, and then a word-form for
user interaction.

format
string   output
%a	locale's abbreviated weekday name
%A	locale's full weekday name
%d	numeric day of MONTH (1..31)
%u	numeric day of WEEK (1..7) ; 1 is monday




More information about the mdlug mailing list