Trending March 2024 # Complete Guide To Mysql Date_Sub() # Suggested April 2024 # Top 6 Popular

You are reading the article Complete Guide To Mysql Date_Sub() updated in March 2024 on the website We hope that the information we have shared is helpful to you. If you find the content interesting and meaningful, please share it with your friends and continue to follow and support us for the latest updates. Suggested April 2024 Complete Guide To Mysql Date_Sub()

Definition on MySQL DATE_SUB()

The date_sub() is a built-in function of MySQL database server, which is used to make the difference of a time or date value from a date or DateTime value and outputs the result as date or DateTime. The function accepts two arguments; the first argument passed is starting date or initial date from which the second argument, which is the time interval, is subtracted argument to generate the output. The function can output the result in various units. The unit should be passed in the function we want our output to be.

Start Your Free Data Science Course

Hadoop, Data Science, Statistics & others


Below is the syntax of MySQL Date_sub():

DATE_SUB (start_date,time expression unit)

Mathematically, the Date_sub function can also be written as below:

Date_sub=difference(start_date,time interval)

The above syntax of date_sub() takes two arguments. They are:

start_date is the initial date or datetime value or beginning date.

A time expression is a string representing a time value subtracting from the start_date value. The unit is the time unit as year, month, day, etc.

The unit can be microseconds, seconds, minutes, hours, weeks, months, years, quarters, second_microsecond, minute_microsecond, minute_second, hour_microsecond, hour_second, hour_minute, day_microsecond, day_second, day_minute, day_hour, year_month, etc.

The following statement uses the date_sub () function to subtract two days from May 24, 2023:

Examples of MySQL DATE_SUB()

Below are the examples mentioned for better understanding :

Example #1


Select date_sub('2024-05-24',interval 2 day) AS result;


The above example’s start date is 2023-05-24, written in the yyyy-mm-dd format. The second argument is a 2-day interval. The output of the date_sub() function is 2023-05-22 in the console.

Example #2

Below is the query where the time interval is of 5 hours:


Select date_sub('2024-05-24',interval 5 hour) AS result;


Since the time interval is 5 hours, the function’s output is a DateTime value.

Query with a Negative Interval

The interval or second argument’s time expression could be positive or negative. We can handle both positive and negative time intervals passed as the second parameter in the date_sub() function. When the time interval is negative, the date_sub() function functions similarly to the date_add() function, as demonstrated in the query below:

Example #3


Select date_sub('2024-05-24',interval -2 day) AS result;


In the above query, we have passed a negative 2-day interval as our second parameter. Therefore, two days are added to the starting or initial days in the output.

Example #4


Select date_sub('2024-02-29',interval -2 day) AS result;


In the above query, the start date is 2023-02-29, and the second argument, i.e., the interval is a negative interval of 2 days. Technically, the output of the query must be 2023-02-30, which is an invalid date as there is no 30th day in February month. Therefore the output of the query is March 2nd, 2023.

Query for an Invalid or Abnormal Date Example #5


Select date_sub('2024-02-35',interval -2 Day) AS result;0


In the example below, 2023-02-35 is an invalid date; therefore, it gives the output NULL and a warning message in the output console.

Example #6 Show warnings;


Example #7


Select date_sub(null,interval 1 Day) AS result;


Since, In the above query, we have passed a null value in the initial date value as our first parameter, whatever we give as an interval in the second argument will output a null value.

Query for Automatic Adjusted Day

When subtracting a MONTH, YEAR, or YEAR_MONTH interval from a date, if the result is a date with a day number greater than the maximum day of the new month, the day will be adjusted to the maximum day in the new month.

The below query explains the automatically adjusted day concept easily.

Example #8


Select date_sub('2024-05-30',interval 1 month) as result;


In this example, we subtracted one month from May 24th, 2023, so the outcome is April 30th, April.

Example #9


Select Date_sub('2024-05-24',interval 2 week) AS 'negative week'; Select Date_sub('2024-05-24', interval 2 month) AS 'negative month'; Select Date_sub('2024-05-24',interval 2 quarter) AS 'negative quarter';


Example #10


Select date_sub('2024-05-24 11:00:00', interval 6 hour) As result;

Example #11


Select date_sub(curdate(), interval 6 hour) AS result


Example #12


select date_sub(curdate(), interval -2 day) result;


Example #13


Select date_sub('2024-05-24 12:20:20.000010',interval 1000 microsecond) As result;


Example #14


Select date_sub('2024-05-24 12:20:20.000010',interval 750 microsecond)As result;



If we specify a time interval value that is too small for the specified unit, the DATE_SUB() will assume that the user did not provide the left-most part of the interval value.

DATE_SUB function with a negative value as a parameter is the same as that of the DATE_ADD function.

The DATE_SUB function is used in the below-mentioned versions of MySQL:

MySQL 5.7,  MySQL 5.6,  MySQL 5.5,  MySQL 5.1,  MySQL 5.0,  MySQL 4.1,  MySQL 4.0,  MySQL 3.23

Conclusion – MySQL DATE_SUB()

In this article, we learned how MySQL date_sub() function subtracts the time from a date or datetime value in various units. We have tried to explain every aspect of the date_sub() function easily with the query with almost all the units like microseconds, days, months, years, weeks, quarters, etc., along with the screenshots of the output console for a better understanding of the reader. We have also learned about the negative date-time concepts of the date_sub() function.

Recommended Articles

We hope that this EDUCBA information on “MySQL DATE_SUB()” was beneficial to you. You can view EDUCBA’s recommended articles for more information.

You're reading Complete Guide To Mysql Date_Sub()

Complete Guide To Golden Handshake With Working

What is Golden Handshake?

Start Your Free Investment Banking Course

Download Corporate Valuation, Investment Banking, Accounting, CFA Calculator & others


Normally employment contracts contain a clause of severance package to be given to the employees by the employer when they lose out on their active jobs due to professional negligence or due to lay-offs or due to voluntary retirement. The severance package is offered to the employees who are either engaged in a high-risk job or they are employed as a top executive in the organization. This is primarily done to protect employee interests when they hold top executive posts. The severance package is the collection of the benefits offered by the employer to the employee when the services of the employees are ended abruptly or they are laid off from the organization. Normally, the employer and employee have to sign the severance agreement or contract. The total amount of the money receivable to the employee depends upon the tenure’s length they stay in the organization. Such payments may also include unutilized vacations or sick leaves and business expenses that are yet to be reimbursed.

How does it work?

Whenever a business feels that the top employee has attained an age where he could be asked to retire or whenever business reaches the point that they have to cut down the costs of the employees, they initiate the golden handshake clause as per the contract. They communicate with the employees who hold the top executive positions in the organization. In such a scenario, it is not the mistake of the employees and yet their services are being terminated. The severance package under the golden handshake clause mitigates the imminent financial risk resulting from an abrupt termination of services. The scenarios where a golden handshake is prominently applied are when the employee is closed to his retirement age or either the business is looking towards the reduction in costs of operations.

Examples of Golden Handshake Reasons for Golden Handshake

In the business lifecycle, there comes a point beyond which if the business continues to undertake the rising costs of operations, this could result in imminent failures for the business. The business may shut down eventually and this would end up affecting the employees who are at the bottom-most level or tier in the organization. Therefore, as a defense mechanism and to protect the interests of all employees, the top executives are asked to take up voluntarily retirement or they are laid off by the business which then helps the business to curb their rising costs. Since the employees who held the top-level positions in the organizations were not at any fault, the business offers them a golden handshake which helps the laid-off employees to mitigate their financial risk.

Golden Handshake vs Golden Parachute

The golden parachute is termed as a package that the employee receives if the business has been taken over by the other company and the services of the employee are terminated as the result of the merger. The golden parachute is also given to key and top executives employed in the business. The package under the golden parachute may be composed of severance pay, stock options and cash bonuses. The golden parachute can be regarded as a poison pill which undertaken by the target business in the form of employee exodus to discourage the attempts of a hostile takeover by the acquiring business.  On the other hand, the golden handshake can be compared to as golden boot offered by the organization to offered with the intent of initiating their voluntary retirement from the organization. The golden handshake is nowhere related to mergers and takeovers.


Normally top-level executives or employees are engaged in a high-risk job. Taking the nature of risk into the account, the employer agrees to offer a hefty package in the form of a golden handshake. This motivates the employee to work diligently for the employer.

Normally when top-level executives change jobs, they take into account the level of severance package offered by the employer along with the salary offered.

The golden handshakes take care of the financial security of the employee when he or she faces unemployment and job loss.

It helps employees to seek out better alternatives and opportunities as they won’t have to worry on the account of immediate money requirements or funding needs.

The golden handshake offered to the employee is often not performance-based. The employment contract does not add the stipulation or clause that the employee has to perform throughout his employment tenure. Therefore, when employees are fired under the ground of non-performance, the employees would still be eligible for the severance package.

The organization may induce early retirements for the employees deliberately to tone down the costs of increasing operations.

They could further initiate it to cut down on their labor force to meet the demand of an ever-changing business environment or to cope up with a takeover.

If the top executives take up a golden handshake then they have to accept the non-compete clause under the severance package.

A non-compete clause states that the top executive would be allowed to open any rival business for predefined tenure once terminated from the organization.


The golden handshake is one of the clauses in the employment contract of the employee who holds top executive or management level position in the organization. The golden handshake offers a severance package which helps employee mitigate their financial risk.

Recommended Articles

Complete Guide To Docker Registry With Examples

Introduction to Docker Registry

Docker Registry is used to store Docker images i.e. read-only template. In other words, the Docker registry stores Docker repositories that hold Docker images in different tagged versions. It is an open-source, stateless, and highly scalable server-side application. It allows us to control where we want to store our Docker images, we fully own our image distribution pipeline and integrate it with in-house development workflow. Docker registry is only compatible with the Docker engine version 1.6.0 or higher. We can use default storage driver i.e. POSIX file system for development or small deployments however it is recommended to use supported cloud-based storage drivers like S3, Microsoft Azure, Openstack Swift, etc.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

How does Registry work in Docker?

We can run our own registry to integrate with our CI/CD pipeline. So, if there is any commit to source code, the SCM tool would trigger a build on our CI system and if the build is successful, it would push the new image to our registry. The Registry then sends the notification that would trigger a deployment on a staging environment. We can quickly deploy a new image over a large cluster of machines using the CI/CD model. We can share Docker images inside an isolated network using the Docker registry. It supports TLS and basic authentication for securing access to our hosted images.

We can a run private registry as a container using the below command:


$docker push localhost:5000/alpine

In the above example, we have started a registry container named ‘my-registry’ using ‘registry:2’ Docker image and it is listening on port 5000 and restart option is set to ‘always’ so if container stopped in any case, docker daemon will start it automatically.


$docker pull ubuntu


And when we try to push the ‘alpine’ Docker Image the same thing happens. Docker daemon automatically adds ‘’ to the image and tries to push it to official Docker Hub however it requires authentication to push the image to official Docker Hub. We can create our Docker ID and push the Docker image to our Docker ID however we again re-tag the Docker Image with our Docker ID and Docker image name.


$docker push alpine



$docker push sarab303/alpine


We can pass additional options or modified options to change the basic configuration of the registry. For example, changing the default listening port, customize storage location, implement TLS for securing the registry, etc.

Let’s assume that we already have an application listening on port 5000 and we want to expose the registry on port 5003, we can do that as below:


$docker push localhost:5003/alpine


If we want to use different port other than default port on which registry listens within the container, we can change that as well by using environment variable REGISTRY_HTTP_ADDR as shown in the below command:




We can customize the storage location to store the respositories of the registry persistently, we can accomplish this by mounting host location or volume to the container. Here, we run the registry container as below to bind mount the host directory ‘/mnt/registry’ into the registry container at ‘/var/lib/registry/’.


$docker pull localhost:5000/alpine


In the above example, started a new local registry named ‘my-registry’ and tagged the ‘alpine’ Docker image to ‘localhost:5000/alpine’ and pushed it to the local registry, then stopped the registry container and deleted it. Also removed locally available ‘alpine’ and ‘localhost:5000/alpine’ Docker images from the host. Now, again started a new registry container and mounted the same host directory to this container and tried to pull the earlier pushed Docker image i.e. ‘localhost:5000/alpine’ and it is successful.

However, the above implementation is only for testing purposes as there is no authentication mechanism is implemented. Let’s implement basic authentication for our private registry by generating an ‘htpasswd’ file and self-signed certificates using below commands.


-x509 -days 365 -out certs/domain.crt

In the above example, we have created a directory called ‘auth’ and ‘certs’ to store the htpasswd credentials and self signed certificates respectively. First, we have created the user ‘user1’ with the password ‘[email protected]’ and stored it in the ‘htpasswd’ file under ‘auth’ folder, then generated self signed certificates using openssl and stored the ‘domain.key’ and ‘domain.crt’ files in the ‘certs’ folder keeping all details blank except the common name of the server.

Now, we create a new container with additional options and mounting the certs and auth folders to it.




$docker push localhost:443/nginx


In the above snapshot, tagged the ‘nginx’ Docker image to ‘localhost:443/nginx’ and tried to push to the newly setup private registry however we can see that it is giving error that says ‘no basic auth credentials’. Logged into the private registry using the credentials of ‘user1’ and the image has been pushed to the private registry successfully.


Docker Registry is a great solution for hosting on-pre private registry, however, there are alternatives available for Docker Registry like Docker Hub which is free to use, hosted registry by Docker, need to pay for additional features though, and DTR i.e. Docker Trusted Registry is a commercially supported version of the registry, comes with Docker Enterprise Edition.

Recommended Articles

This is a guide to Docker Registry. Here we discuss the introduction to Docker Registry along with how registry work. You may also have a look at the following articles to learn more –

How To Use Trello, A Complete Guide

At a daily level, people have to deal with a lot of planning and management at both home and workplace environments. To make things easy, technology has provided us with the tools to plan our hectic schedules painlessly. White boardrooms were always pretty fun for planning tasks and this tool brings it to the digital front. Here, we will be taking a look at How to use Trello and what makes it a favourite among many users.

What is Trello and how does it work?

Trello is a visual-editor based project management tool that brings fun back to task chúng tôi over 5 million registered users, it is a flexible tool for both your office and home requirements.

Let’s dive in and take a look for yourself how to use Trello.

Trello makes use of boards, lists and cards as the basic structure to help you complete your tasks. It makes use of a top-down approach to achieve tasks in your project.

Task management with Trello starts by creation of a board, which is the primary top-level motive of a workflow task. It allows addition of as many number of members you wish to add to it and collaborate seamlessly with them, so you can embrace Inbox (0) with it. The tool perfectly suits every project that you could think of – Be it a boardroom meeting or a weekend hangout plan with friends; it has got you covered.

Individual tasks, or cards, which make up for content on a Board could be created, labelled, shared and even be set up for reminders. Now let’s get into the network and see how to accomplish your tasks and get work done with this tool.

Getting started with Trello: The Basics

Boards: A Board is the top-level primary task of your project. Be it planning a trip with family or for your business’ re-design plan, a Board is what a project is all about. A board gives you a birds’-eye view of your entire project, from where you can plan your immediate next tasks.

Lists: Lists help you organize tasks that are similar in nature or tasks that together make up a next-level hierarchy in your top-bottom approach to project management. Say, for example, for wedding planning, you could include lists like ‘Tasks to do’, ‘Done tasks’, ‘Invited people’, ‘People to invite’, and so on.

Cards: Cards are the basic task elements that put together make up the big-picture of your project at hand. Cards are arranged sequentially in a vertical manner, which make up a List. These cards could be dragged and dropped to anywhere across the board. A card is the most significant aspect, which could be colour labelled, added check-lists, deadlines, timestamps, stickers, etc.

This is all the basics you would be needing to know before getting started on your first project with this tool. Let’s see it in action as we build a project workflow using Trello.

Organizing your Projects with Trello

As we have established before, creating and managing projects with this tool is a pretty painless process. To walk you through all of the best features and its capabilities, we’ll work with an example, here it is a ‘Publishing Calendar’ using Trello.

Creating a new Board

Adding New Lists

Above you can see Two lists already made – ‘Article Ideas’ and ‘Researching’, while setting up a new list is being shown. Lists are the collection of tasks based on their nature. The tool follows a left-to-right and top-to-bottom approach while traversing through tasks in its Board. Hit ‘Add new List’ to create new relevant lists as seen above.

Adding New Cards

Cards are the individual tasks that are to be performed. Creating and managing tasks gets pretty easy. As shown above, hit ‘Add a card’ seen at the bottom of a list to add a new task. By entering to the next line, a new card is automatically created for you. Card description could also be added to make it more useful and detailed for the members involved in it.

So, now that we have the bare-bones of our project workflow set up, we’ll look at the tweaking options to get better organized.

Card Power-ups

A ‘Card voting system‘ when enabled, allows invited members to vote on a specific card.

‘Card ageing‘ feature allows a specific age in weeks to be defined to a task, after which it will start ageing, or becomes more progressively transparent through the days and finally cracks up.

‘Card calendar‘ allows all the tasks with a Due date to be viewed in a Calendar available through the Board’s main page.

Other additional Features

While the above mentioned features are the primary ones encountered, the experience is further improved with these additional features.

‘Add Due Date‘ to your cards to let you know easily about an upcoming important task at hand. When ‘Card calendar’ is enabled, these tasks with Due dates could be viewed on the Board’s main Calendar.

‘Add Attachments‘ allows users to attach media and all types of files and documents to a card, which could be accessible to other members added to the card. These attachments could be either from your local hard drive or from your cloud accounts across Google Drive, Dropbox, One drive, etc.

‘Edit Labels‘ allows you to organize tasks as per their categories and label it accordingly using colored stripes. Labeling this way allows you to Filter cards easily.

‘Subscribe‘ allows you to be updated with all the happenings in a board or in a particular card in a specific list.

Stickers are also available, which could be easily dragged onto cards.

Change Background colour of your Board from the same menu bar to give it a fresh new look.

Desktop Notifications

To turn ‘Off’ these notifications, head over to the Settings section of your web browser. Go to ‘Content settings’, found under Privacy in Advanced settings in Google Chrome. Head over to Notifications sub-heading, hit ‘Manage exceptions’ and remove a link that mentions Trello. Now you would have turned off your desktop notifications for this tool.

Keyboard Shortcuts

Trello does offer a few keyboard shortcuts that make the entire process even smoother. Below are a few of the most important keyboard shortcuts that it offers:

Auto-complete Members: @

Clear all Filters: X

Add Voting feature to a card: V (Voting Power-up must be enabled beforehand)

Edit Title: T

Assign/Un-assign yourself to a card: SPACE

Subscribe: S

Insert new card: N

Add/Remove members: M

Add Due date: D

For a complete list of Keyboard shortcuts, head over to their official webpage.

Trello is available in four major languages – English, Deutsch, Español and Portuguese.

Platforms Supported

Trello is available as a Web application, Android, iOS, Windows 8 and Kindle Fire applications.

Finishing it Up

So, above what you see is a sample ‘Publishing Calendar’ made using this tool. It features all the important stages of an Editorial Calendar in a manner that is comfortable to look at and take the necessary actions. While this was one way of putting Trello to use, you can make your own boards and tasks as per your required course of action.

You can print this workflow or export it as a Link or JSON. The planning of a workflow could even be set up as a Daily lists, targeting at the activities at a single day-level.

So by now you must have gotten the gist of this tool and how powerful as a project management tool it is.

Trello for Advanced Users

For organizations using Trello with different teams, say editorial and marketing, this is a great tool. It lets all of your scheduling stay under separate boards, yet under a single umbrella, by creating a new ‘Organization’. At the home screen, you can create two new organizations in this case as ‘Marketing’ and ‘Editorial’. While creating a new Board, you can choose the relevant ‘Organization’ from the drop down list below it.

Why consider Trello Premium Plans?

Add your own backgrounds, stickers and emojis with Trello Gold.

Trello Business class allows businesses to create public and private boards, which are all accessible under the organization. It provides a better administrative control with user roles.

Business class features support for Google Apps Integration.

The tool also features its own Android and iOS mobile applications for workflow management on the go. Real-time notifications, collaboration and attaching of media and docs through even its mobile application makes a great case for it.

Trello Boards Put to best use

Trello seamlessly integrates with Zapier, to connect it to other third-party apps and automate repetitive tasks. You can manage almost any and every project and plan using the tool’s flexible system.

SEE ALSO: How To Use Dubsmash, A Beginner’s Guide


Trello is definitely one of the most powerful project management app that the internet features right now. This tool is made alike for both individuals and business to make the most of its flexibility. You can create and manage almost any kind of tasks using this tool.

Complete Guide On Django Middleware

Introduction to Django Middleware

Web development, programming languages, Software testing & others

Middleware Activation

Include the middleware item in the MIDDLEWARE list within the chúng tôi file to activate a middleware. The list below holds the default middleware items generated when a Django project starts. The order of declaration for the middleware components has significance.

MIDDLEWARE = [ '', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',

The following explains the necessity and usage of the default middleware listed above in the Django framework:

Default Middlewares Operations Descriptions djangosecure.Middleware.SecurityMiddleware X-Frame-Options: DENY Limits the pages displayed to be within a frame. HTTP Strict Transport Security Setting this allows the website to be accessible to the browser only on HTTPS instead of HTTP. X-Content-Type-Options: nosniff This option helps to prevent against MIME sniffing vulnerabilities. X-XSS-Protection: 1; mode=block When an XSS(Cross-site scripting) attack is detected, it stops the website pages from getting further loaded. SSL Redirect Detecting proxied SSL In rare instances, the request.is_secure(), the method returns false for valid requests; setting this option will help to set an alternative header to the secured external connection. Rewriting of URLs based on APPEND_SLASH and PREPEND_WWW settings. When APPEND_SLASH is TRUE, and the URL does not have a ‘/,’ then the new URL will have a slash at the end of the URL. NA Restrict access for the users listed in DISALLOWED_USER_AGENTS setting django.contrib.sessions.middleware.SessionMiddleware When the session Middleware is activated, every HttpRequest object will have a session attribute tagged as the first argument. This is a dictionary object, and session values can be inserted into this dictionary object using a request. Session anywhere in the view file. Django. middleware.csrf.CsrfViewMiddleware This middleware option allows protection against all cross-site request forgeries. django.contrib.auth.middleware.AuthenticationMiddleware django.contrib.messages.middleware.MessageMiddleware This middleware will handle all temporary messages between the website and the web browser. Limits the pages displayed to be within a frame. How does middleware work in Django?

Below are the key points on the working of middleware in Django,

The order of declaration for the middleware components is significant.

The middleware classes get executed twice in the request/response lifecycle.

During a request, the classes are executed from top to bottom order.

During a response, these classes get executed from bottom to top order. This is why the order of the components is significant.

The _init_ method is executed during the start of the server.

the _call__ method is executed for every request.

Mandatory Methods in a Middleware

The middleware must include at least one of the methods listed below:

If middleware needs to process during request:


process_view(request, view_func, view_args, view_kwargs)

If middleware needs to process during response:

process_exception(request, exception) (only if the view raised an exception)

process_template_response(request, response) (only for template responses)

process_response(request, response)

Custom Middleware

1. Place a file called chúng tôi anywhere inside the project. The location where this middleware file has been placed is not a big deal, as per the Django setup. The crucial aspect is ensuring that this file’s path is accurately specified in the middleware list within the chúng tôi file. This is the most important element.

class NewMiddleware: def __init__(self, get_request): self.get_request = get_request def __call__(self, request): request = self.get_request(request) print("The Newly installed middleware is successfully triggered!!!") return request MIDDLEWARE = [ '', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # Userdefined Middleware 'Django_app1.middleware.NewMiddleware', ]

Recommended Articles

We hope that this EDUCBA information on “Django Middleware” was beneficial to you. You can view EDUCBA’s recommended articles for more information.

Bash Exit Codes: A Complete Guide

When working with Bash scripts, it is essential to understand the concept of exit codes. An exit code is a number that a command or script returns to the operating system upon completion of its execution. It indicates whether the command or script completed successfully or failed and provides additional information about the outcome of the operation. In this guide, we’ll explore the basics of Bash exit codes, how to use them in scripts, and related concepts that will help you write efficient and reliable scripts.

Basics of Bash Exit Codes

In Bash, an exit code is an integer value between 0 and 255 that a command or script returns to the shell. By convention, an exit code of 0 means success, and any non-zero value means failure. Some commonly used exit codes are:

Exit code 0: Success

Exit code 1: General error

Exit code 2: Misuse of shell built-ins

Exit code 126: Command cannot execute

Exit code 127: Command not found

Exit code 128: Invalid argument to exit

Using Exit Codes in Bash Scripts

In Bash scripts, you can use exit codes to determine the success or failure of a command or script and take appropriate actions based on the outcome. For example, you can use the if statement to check the exit code of a command and execute different commands based on the result.

Here’s an example:

#!/bin/bash ls /usr/bin if [ $? -eq 0 ]; then echo "Command succeeded" else echo "Command failed" fi

In this script, we run the ls command on the /usr/bin directory and check its exit code using the $? variable. If the exit code is 0, we print “Command succeeded,” and if it’s non-zero, we print “Command failed.”

You can also use exit codes to terminate a script or function prematurely. For example, you can use the exit command to exit a script with a specific exit code.

Here’s an example:

#!/bin/bash function my_function { # Do some work if [ some condition ]; then exit 1 fi # Do more work } my_function if [ $? -eq 0 ]; then echo "Function succeeded" else echo "Function failed" fi

In this script, we define a function my_function that performs some work and checks a condition. If the condition is true, we use the exit command to exit the function with an exit code of 1. We then check the exit code of the function using $? and print the appropriate message.

Related Concepts $? Variable

As mentioned earlier, the $? variable is a special variable that stores the exit code of the last command executed in Bash. You can use this variable to check the success or failure of a command and take appropriate actions based on the result.

trap Command

The trap command is a Bash built-in command that allows you to execute a command when a signal is received. You can use the trap command to handle errors or unexpected events in your script and take appropriate actions based on the situation.

Here’s an example:

#!/bin/bash function cleanup { echo "Cleaning up" # Do some cleanup work } trap cleanup EXIT # Do some work exit 0

In this script, we define a function cleanup that performs some cleanup work when the script exits. We use the trap command to execute this function when the script receives the EXIT signal. This ensures that the cleanup code is always executed, even if the script fails or is terminated prematurely.


Exit codes are an essential concept in Bash scripting that allow you to determine the success or failure of a command or script and take appropriate actions based on the outcome. By understanding how to use exit codes in your scripts, you can write efficient and reliable code that handles errors and unexpected events gracefully.

Update the detailed information about Complete Guide To Mysql Date_Sub() on the website. We hope the article's content will meet your needs, and we will regularly update the information to provide you with the fastest and most accurate information. Have a great day!