Sponsored Content
Top Forums Shell Programming and Scripting Portable Shell Script - Determine Which Version of Binary is Installed? Post 302710789 by colinjohnson on Friday 5th of October 2012 01:00:49 AM
Old 10-05-2012
Portable Shell Script - Determine Which Version of Binary is Installed?

I currently have a shell script that utilizes the "Date" binary - this application is slightly different on OS X (BSD General Commmand) and Linux systems (gnu date). In particular, the version on OS X requires the following to get a date 14 days in the future "date -v+14d -u +%Y-%m-%d" where gnu date requires "date -d "+ 14 days" -u +%Y-%m-%d".

I desire to make my script portable - so I believe that I'll need to utilize a test to determine which version of the date application is installed and thus, what command to run. I've come up with the following two methods, but am looking for advice:

Use "File" tool:
Code:
date_binary_full_path=`which date`
date_binary=`file -b $date_binary_full_path`
if [[ $date_binary ~= "Mach-O 64-bit executable x86_64" ]]
    then date_command="date -v+14d -u +%Y-%m-%d"
elif  [[ $date_binary == "ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped" ]]
	date_command="date -d \"+ 14 days\" -u +%Y-%m-%d"
else
	date_command="date -d \"+ 14 days\" -u +%Y-%m-%d"
fi
echo $date_command

Use "date" --version switches:
Code:
if [[ `date --version 2>&1 | grep -c "date (GNU coreutils)"` > 1 ]]
	then date_command="date -d \"+ 14 days\" -u +%Y-%m-%d"
else
	$="date -v+14d -u +%Y-%m-%d"
fi
echo $date_command

 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Determine Unix Version

Is there a trick to determine the exact version from Unix that one is working with? I would have expected to see it after logon, but all I get are some Copyright-messages... I know it's some HP-UX, but I would like to know the version-number Tnx in advance! Dave (2 Replies)
Discussion started by: davegeysemans
2 Replies

2. UNIX for Dummies Questions & Answers

Cmd to determine my OS version?

I'm looking for a generic (i.e. would be resident in most/all unix flavors) internal command for determining my OS and version. When I telnet to a box here @ work, I get none of that info and can't remember the equivalent of the DOS ver command; I know I used to know this! Thanks. (2 Replies)
Discussion started by: brian.wilson
2 Replies

3. Shell Programming and Scripting

ftp - determine ascii or binary file

Hello, How to i determine via ftp commandline if files on ftp server is ascii or binary files. Like every other comon windows ftp program does it automatically. regards Thomas (5 Replies)
Discussion started by: congo
5 Replies

4. UNIX for Dummies Questions & Answers

Tru64 - how can you determine the package where a file or binary belongs to?

Dear linux-unix users, I hope that one of you will be able to help me. How can I determine to which package a file or binary belongs to. With solaris/linux package managers you can easely determine this but i cant find the way how to do this on tru64. Any help would greatly be appreciated.... (0 Replies)
Discussion started by: Crazy_lenny
0 Replies

5. Linux

A portable bootable version?

What I have been doing for some time now is installing linux on my tech machine at work, plugging in devices and transferring data with dd_rescue. What I need now is a version of linux that I can install on a laptop sata hard drive and be able to plug it into any machine to transfer data off of... (1 Reply)
Discussion started by: Methal
1 Replies

6. Solaris

How to determine, whether Sun WorkShop is installed on Solaris worksation?

How to determine, whether Sun WorkShop is installed on Solaris worksation? And if It's installed, how to start one? (2 Replies)
Discussion started by: wolfgang
2 Replies

7. Solaris

T5220 How to determine physical memory installed?

Hi, looking to upgrade memory on a pair of T5220's from 32GB to 64GB. Cannot determine current DIMM size and slots used. i.e. not sure if Qty 16 x 2GB or Qty 8 x 4GB. If there are no empty slots, i need to go with higher density DIMMs and retire exsisting the 2GB prtdiag follows. #... (3 Replies)
Discussion started by: edrew
3 Replies

8. Shell Programming and Scripting

Portable shell script advise

All, I have a need for a portable shell script for LInux and HPUX. The script has a simple need; Check for local files of a specific name (i.e. filename*), scp them to another system, and archive them to a folder. The script runs via cron. I first wrote the script in Linux (bash with gnu... (4 Replies)
Discussion started by: hburnswell
4 Replies

9. UNIX for Beginners Questions & Answers

Bash find version of an installed application but if none is found set variable to App Not Installed

Hello Forum, I'm issuing a one line bash command to look for the version of an installed application and saving the result to a variable like so: APP=application --version But if the application is not installed I want to return to my variable that the Application is not installed. So I'm... (2 Replies)
Discussion started by: greavette
2 Replies
TCAL(1) 						      General Commands Manual							   TCAL(1)

NAME
Tcal - runs the Gcal program with the date of tomorrow's day. SYNOPSIS
tcal [--help | --version] | [--shift=[+|-]number] [Argument...] DESCRIPTION
Tcal is a program which runs gcal with a date set one day ahead (equivalent the --shift=1 option). All given arguments are passed unmodi- fied to the Gcal program. If the Gcal program shall be called with another date than tomorrow's date, this desired date can be selected by using the --shift=[+|-]number option, in which [+|-]number is the distance of days the desired date is distant from the actual date (works only for Gregorian years). The --shift option must be given before all other arguments which are passed to the Gcal program. An exit status of 0 means all processing is successfully done, any other value means an error has occured. OPTIONS
--help Print a usage message listing all available options, then exit successfully. --version Print the version number, then exit successfully. --shift=[+|-]number Define the displacement in [+|-]number days the desired date is distant from the actual date. ENVIRONMENT
GCALPROG The GCALPROG environment variable contains the file name of the executable Gcal program, which is used by Tcal to call Gcal. This takes precedence over the file name `gcal', which is burned-in during the compilation step of tcal. COPYRIGHT
Tcal Copyright (c) 1995, 96, 1997, 2000 Thomas Esken This software doesn't claim completeness, correctness or usability. On principle I will not be liable for any damages or losses (implicit or explicit), which result from using or handling my software. If you use this software, you agree without any exception to this agree- ment, which binds you LEGALLY !! Tcal is free software and distributed under the terms of the `GNU General Public License'; published by the `Free Software Foundation'; version 2 or (at your option) any later version. Any suggestions, improvements, extensions, bug reports, donations, proposals for contract work, and so forth are welcome! If you like this tool, I'd appreciate a postcard from you! Enjoy it =8^) AUTHOR
------------------------oOO \\_''/ OOo--------------------------- Thomas Esken O (/o-o) O eMail: esken@gmx.net Im Hagenfeld 84 (( ^ )) Phone: +49 251 232585 D-48147 Muenster; Germany \____) ~ (____/ MotD : 2old2live, 2young2die SEE ALSO
gcal(1), txt2gcal(1), gcal2txt(1). June 14, 2000 TCAL(1)
All times are GMT -4. The time now is 01:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy