I need help creating a shell script to toggle between two commands.
When it is run command1 is executed then if it is run again it executes command2 and so on...
3 Answers
One good way of accomplishing this is for the script to create a blank "configuration file":
- The 1st time the script runs, it sees the file doesn't exist, creates it, and runs
command1. - The 2nd time the script runs, it sees the file does exist, deletes it, and runs
command2. - The 3rd time the script runs, it sees the file doesn't exist, creates it, and runs
command1. - The 4th time the script runs, it sees the file does exist, deletes it, and runs
command2.
And so forth.
Here's a script that does that:
#!/bin/sh
# This shell script is PUBLIC DOMAIN. You may do whatever you want with it.
TOGGLE=$HOME/.toggle
if [ ! -e $TOGGLE ]; then
touch $TOGGLE
command1
else
rm $TOGGLE
command2
fi
- 119,640
(As a complement to the main answer)
To make it display a message after running the commands, and also showing an icon - example for toggling touchpad off and on (source, also here):
#!/bin/sh
# This shell script is PUBLIC DOMAIN. You may do whatever you want with it.
TOGGLE=$HOME/.toggle_touchpad
if [ ! -e $TOGGLE ]; then
touch $TOGGLE
xinput disable 14
notify-send -u low -i mouse --icon=/usr/share/icons/HighContrast/256x256/status/touchpad-disabled.png "Trackpad disabled"
else
rm $TOGGLE
xinput enable 14
notify-send -u low -i mouse --icon=/usr/share/icons/HighContrast/256x256/devices/input-touchpad.png "Trackpad enabled"
fi
(in the above commands 14 is a variable to be identified with xinput list)
- 4,066
- 4
- 47
- 106
You can write a file with your last command. Then when it is run again you read the file, and see which command was executed.
- 119,640