This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
action:Execute_a_Shell_Script [2021/10/14 04:45] peternlewis |
action:Execute_a_Shell_Script [2023/09/12 23:03] peternlewis [See Also] |
||
---|---|---|---|
Line 16: | Line 16: | ||
If the script fails, the action will fail (v9.0+), potentially aborting the macro. | If the script fails, the action will fail (v9.0+), potentially aborting the macro. | ||
+ | |||
+ | Keyboard Maestro sets the environment variables for the script to include all your variables, using a prefix of `KMVAR_` and your variable name with spaces changed in to underscores (‗). For example, your Keyboard Maestro “File Name” variable will be available as the environment variable `KMVAR_File_Name`. | ||
+ | |||
+ | Keyboard Maestro also provides (v10.0+) a number of environment variables that contain information about the executing macro. These include: | ||
+ | |||
+ | ^environment variable^meaning^ | ||
+ | |`KMINFO_MacroName`|The name of the parent executing macro| | ||
+ | |`KMINFO_MacroUUID`|The UUID of the parent executing macro| | ||
+ | |`KMINFO_MacroGroupName`|The name of the macro group containing the parent executing macro| | ||
+ | |`KMINFO_MacroGroupUUID`|The UUID of the macro group containing the parent executing macro| | ||
+ | |`KMINFO_ThisMacroName`|The name of the executing macro| | ||
+ | |`KMINFO_ThisMacroUUID`|The UUID of the executing macro| | ||
+ | |`KMINFO_ThisMacroGroupName`|The name of the macro group containing the executing macro| | ||
+ | |`KMINFO_ThisMacroGroupUUID`|The UUID of the macro group containing the executing macro| | ||
+ | |`KMINFO_TriggerTime`|The [[/unixtime|unixtime]] the parent macro started executing| | ||
+ | |`KMINFO_TriggerBase`|The type of the trigger that started the parent macro| | ||
+ | |`KMINFO_Trigger`|The trigger description of the trigger that started the parent macro| | ||
+ | |`KMINFO_TriggerValue`|the value associated with how the parent macro was triggered| | ||
+ | |`KMINFO_ActionResult`|The success or failure of the immediate past action| | ||
+ | |`KMINFO_LastWindowID`|The window ID of the most recently displayed Keyboard Maestro Engine window| | ||
+ | |`KMINFO_PromptWithListText`|The text typed in the most recently executed [[action:Prompt_With_List|Prompt With List]] action| | ||
+ | |`KMINFO_PasteByNameText`|The text typed in the most recently executed [[action:Paste_by_Name|Paste by Name]] action| | ||
==== Using Keyboard Maestro Variables ==== | ==== Using Keyboard Maestro Variables ==== | ||
- | === Most Languages like bash, perl, ruby === | + | Keyboard Maestro variables are included in the environment of the script, with the prefix `KMVAR_` and spaces in the name replaced with underscores (‗), |
+ | |||
+ | By default, all variables are included, but you can select No Variables, or specific variables as desired using the popup menu next to the script (v11.0+). | ||
+ | |||
+ | === Most Shell Languages like bash === | ||
In your script, use this format $KMVAR‗*VARIABLE‗NAME* where *VARIABLE‗NAME* is the name of your Keyboard Maestro Variable, but with spaces in the name replaced with underscores (‗). | In your script, use this format $KMVAR‗*VARIABLE‗NAME* where *VARIABLE‗NAME* is the name of your Keyboard Maestro Variable, but with spaces in the name replaced with underscores (‗). | ||
Line 225: | Line 251: | ||
Any Keyboard Maestro variable that starts with `ENV_` will automatically be set as the as the corresponding environment variable (without the usual `KMVAR_` prefix). So if you set your path in the `ENV_PATH` Keyboard Maestro variable, the `PATH` environment variable will be set from it. | Any Keyboard Maestro variable that starts with `ENV_` will automatically be set as the as the corresponding environment variable (without the usual `KMVAR_` prefix). So if you set your path in the `ENV_PATH` Keyboard Maestro variable, the `PATH` environment variable will be set from it. | ||
- | You can set this Variable manually in the [[manual:manual/Preferences#Variables_Preferences|Variable Preferences Panel]] in Keyboard Maestro. Once the `ENV_PATH` variable is set, it will remain in your Keyboard Maestro variable until/unless you delete it, and remain available to every Execute a Shell Script action that you might use in the future. So you don’t need to set it in every Macro. | + | You can set this Variable manually in the [[manual:Preferences#Variables_Preferences|Variable Preferences Panel]] in Keyboard Maestro. Once the `ENV_PATH` variable is set, it will remain in your Keyboard Maestro variable until/unless you delete it, and remain available to every Execute a Shell Script action that you might use in the future. So you don’t need to set it in every Macro. |
If your tool requires other environment variables to be set you can set them as well by creating an appropriate Keyboard Maestro variable with `ENV_` at the front. | If your tool requires other environment variables to be set you can set them as well by creating an appropriate Keyboard Maestro variable with `ENV_` at the front. | ||
For example, if you want to use [[https://www.perl.org/ | Perl]] with a custom library search path in the Execute a Shell Script action, you can also create a Keyboard Maestro variable `ENV_PERL5LIB` that will set the [[http://perldoc.perl.org/perlrun.html#ENVIRONMENT|PERL5LIB environment variable]]. | For example, if you want to use [[https://www.perl.org/ | Perl]] with a custom library search path in the Execute a Shell Script action, you can also create a Keyboard Maestro variable `ENV_PERL5LIB` that will set the [[http://perldoc.perl.org/perlrun.html#ENVIRONMENT|PERL5LIB environment variable]]. | ||
+ | |||
+ | ===== Working Directory ===== | ||
+ | |||
+ | The working directory for any executed scripts will be set from the Keyboard Maestro `ENV_PWD` directory (v10.0+), or default to the root directory (`/`). | ||
+ | |||
===== Execute Script From Other Apps ===== | ===== Execute Script From Other Apps ===== | ||
Line 272: | Line 303: | ||
=== Actions === | === Actions === | ||
+ | * [[action:Execute_a_Swift_Script|Execute a Swift Script]] | ||
* [[action:Execute an AppleScript|Execute an AppleScript]] | * [[action:Execute an AppleScript|Execute an AppleScript]] | ||
* [[action:Execute an Automator Workflow|Execute an Automator Workflow]] | * [[action:Execute an Automator Workflow|Execute an Automator Workflow]] |