Autosave: 2025-02-22 10:17:45
|  | @ -0,0 +1,23 @@ | |||
| --- | ||||
| tags: [shell] | ||||
| created: Wednesday, February 19, 2025 | ||||
| --- | ||||
| 
 | ||||
| # Associative arrays (lookup maps) in Bash | ||||
| 
 | ||||
| ```sh | ||||
| 
 | ||||
| declare -A CHANNEL_TO_WEBHOOK # Declare the map type | ||||
| 
 | ||||
| # Specify key values | ||||
| CHANNEL_TO_WEBHOOK["test"]=$SLACK_WEBHOOK_TEST | ||||
| CHANNEL_TO_WEBHOOK["backups"]=$SLACK_WEBHOOK_BACKUPS | ||||
| CHANNEL_TO_WEBHOOK["eolas"]=$SLACK_WEBHOOK_EOLAS | ||||
| CHANNEL_TO_WEBHOOK["website"]=$SLACK_WEBHOOK_SYSTEMS_OBSCURE | ||||
| CHANNEL_TO_WEBHOOK["time-tracking"]=$SLACK_WEBHOOK_TIME_TRACKING | ||||
| 
 | ||||
| # Invoke | ||||
| 
 | ||||
| WEBHOOK=${CHANNEL_TO_WEBHOOK[$CHANNEL]} | ||||
| 
 | ||||
| ``` | ||||
|  | @ -0,0 +1,44 @@ | |||
| --- | ||||
| tags: [shell] | ||||
| created: Saturday, February 22, 2025 | ||||
| --- | ||||
| 
 | ||||
| # Capturing program error in Bash | ||||
| 
 | ||||
| If you want to capture possible error immediately after running the command, use | ||||
| `!`: | ||||
| 
 | ||||
| ```sh | ||||
| if ! grep "pattern" file.txt; then | ||||
|     echo "Pattern not found" | ||||
| fi | ||||
| ``` | ||||
| 
 | ||||
| If you want to store the outcome of a command and refer to it later, use `$?`. | ||||
| This built-in variable captures the exit status of the last executed command (0 | ||||
| for success, non-zero for failure): | ||||
| 
 | ||||
| ```sh | ||||
| ls -a | ||||
| status=$?  # Store immediately if needed later | ||||
| if [ $status -ne 0 ]; then | ||||
|     # handle the error case | ||||
| else | ||||
|     # command was successful (exit code = 0) | ||||
| fi | ||||
| ``` | ||||
| 
 | ||||
| Note: `$?` will be overwritten by any command that runs after the one you're | ||||
| interested in. If you need to check multiple commands' statuses, store $? | ||||
| immediately after each command: | ||||
| 
 | ||||
| ```sh | ||||
| command1 | ||||
| status1=$? | ||||
| command2 | ||||
| status2=$? | ||||
| 
 | ||||
| if [ $status1 -ne 0 ] || [ $status2 -ne 0 ]; then | ||||
|     echo "One of the commands failed" | ||||
| fi | ||||
| ``` | ||||
|  | @ -0,0 +1,14 @@ | |||
| --- | ||||
| tags: [shell] | ||||
| created: Wednesday, February 19, 2025 | ||||
| --- | ||||
| 
 | ||||
| # Check if value is null in Bash | ||||
| 
 | ||||
| ```sh | ||||
| if [ -z $var ]; then | ||||
|   # Value is null | ||||
| else | ||||
|   # Value is not null | ||||
| fi | ||||
| ``` | ||||
| Before Width: | Height: | Size: 664 B After Width: | Height: | Size: 664 B | 
| Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 622 B | 
| Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB | 
|  | @ -13,12 +13,16 @@ computer science. | |||
| 
 | ||||
| <a href="https://thomasabishop.github.io/eolas/tags">View tags</a> | ||||
|   | ||||
| **Build ID:** 5ce25cd2-1b2b-459a-bb58-283daadf8753 | ||||
| **Build ID:** d01ec7d6-3cb6-49cf-8ad7-eac41eb5b055 | ||||
| 
 | ||||
| **Published:** Sun 16 Feb 2025 15:17:20 | ||||
| **Published:** Sat 22 Feb 2025 10:17:40 | ||||
| 
 | ||||
| ### Recent edits  | ||||
| 
 | ||||
| - [[Capturing_program_error_in_Bash]]  | ||||
| - [[Check_if_value_null_in_Bash]]  | ||||
| - [[Associative_arrays_maps_in_Bash]]  | ||||
| - [[Case_statements_in_Bash]]  | ||||
| - [[UFW_firewall_management]]  | ||||
| - [[Firewalls]]  | ||||
| - [[Disable_non-root_ssh_access]]  | ||||
|  | @ -27,13 +31,9 @@ computer science. | |||
| - [[Let's_Encrypt]]  | ||||
| - [[Certificate_authorities]]  | ||||
| - [[HTTPS]]  | ||||
| - [[Bash_colour_output]]  | ||||
| - [[e383b8b3_nginx_vs_traefik]]  | ||||
| - [[Proxies]]  | ||||
| - [[LineageOS_backup]]  | ||||
| 
 | ||||
| 
 | ||||
| ### All notes (530)  | ||||
| ### All notes (533)  | ||||
| 
 | ||||
| - [[0716531c_rewilding_the_internet]]  | ||||
| - [[241fe1a3_the_Web_versus_modem_BBSs]]  | ||||
|  | @ -76,6 +76,7 @@ computer science. | |||
| - [[Arrays]]  | ||||
| - [[Assembly]]  | ||||
| - [[Associative_Property_of_Addition_and_Multiplication]]  | ||||
| - [[Associative_arrays_maps_in_Bash]]  | ||||
| - [[Atomic_and_molecular_propositions]]  | ||||
| - [[Audio_file_formats]]  | ||||
| - [[Awk]]  | ||||
|  | @ -110,10 +111,12 @@ computer science. | |||
| - [[Bus]]  | ||||
| - [[CPU_architecture]]  | ||||
| - [[Call_stack]]  | ||||
| - [[Capturing_program_error_in_Bash]]  | ||||
| - [[Capturing_user_input_in_Bash]]  | ||||
| - [[Case_statements_in_Bash]]  | ||||
| - [[Cells_and_batteries]]  | ||||
| - [[Certificate_authorities]]  | ||||
| - [[Check_if_value_null_in_Bash]]  | ||||
| - [[Cherry_picking]]  | ||||
| - [[Child_to_parent_data_flow_in_React]]  | ||||
| - [[Chipset_and_controllers]]  | ||||
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB | 
| Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB | 
| Before Width: | Height: | Size: 295 KiB After Width: | Height: | Size: 295 KiB | 
| Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB | 
| Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB | 
| Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB | 
| Before Width: | Height: | Size: 289 KiB After Width: | Height: | Size: 289 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 6.9 MiB After Width: | Height: | Size: 6.9 MiB | 
| Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 224 KiB | 
| Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB | 
| Before Width: | Height: | Size: 312 KiB After Width: | Height: | Size: 312 KiB | 
| Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB | 
| Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB | 
| Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB | 
| Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 724 KiB After Width: | Height: | Size: 724 KiB | 
| Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 198 KiB | 
| Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 232 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 3.6 MiB After Width: | Height: | Size: 3.6 MiB | 
| Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 204 KiB | 
| Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB | 
| Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB | 
| Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB | 
| Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB | 
| Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB | 
| Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB | 
| Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB | 
| Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB | 
| Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB | 
| Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB | 
| Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB | 
| Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB | 
| Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB | 
| Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB | 
| Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB | 
| Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB | 
| Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB | 
| Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB | 
| Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB | 
| Before Width: | Height: | Size: 808 KiB After Width: | Height: | Size: 808 KiB | 
| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB | 
| Before Width: | Height: | Size: 470 KiB After Width: | Height: | Size: 470 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB | 
| Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB | 
| Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 175 KiB | 
| Before Width: | Height: | Size: 299 KiB After Width: | Height: | Size: 299 KiB | 
| Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 213 KiB | 
| Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB | 
| Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB | 
| Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB | 
| Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB | 
| Before Width: | Height: | Size: 848 KiB After Width: | Height: | Size: 848 KiB | 
| Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB | 
| Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB | 
| Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB | 
| Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB | 
| Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB | 
| Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB | 
| Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB | 
| Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB | 
| Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB | 
| Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB | 
| Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB | 
| Before Width: | Height: | Size: 226 KiB After Width: | Height: | Size: 226 KiB | 
| Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB | 
| Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB | 
| Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB | 
| Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB | 
| Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB | 
| Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB | 
| Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB | 
| Before Width: | Height: | Size: 414 KiB After Width: | Height: | Size: 414 KiB | 
| Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB | 
| Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB | 
| Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB | 
| Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB | 
| Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB | 
| Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB | 
| Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB | 
| Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB | 
| Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB | 
| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB | 
| Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB | 
| Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB | 
| Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB | 
| Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB | 
| Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB | 
| Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB | 
| Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB | 
| Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB | 
| Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB | 
| Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 374 KiB | 
| Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB | 
| Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB | 
| Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB | 
| Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 448 KiB After Width: | Height: | Size: 448 KiB | 
| Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB | 
| Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB | 
| Before Width: | Height: | Size: 668 KiB After Width: | Height: | Size: 668 KiB | 
| Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB | 
| Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB | 
| Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB | 
| Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB | 
| Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
| Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB | 
| Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB | 
| Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB | 
| Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB | 
| Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB | 
| Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB | 
| Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB | 
| Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB | 
| Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB | 
| Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB | 
| Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB | 
| Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB | 
| Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB | 
| Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB | 
| Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 139 KiB | 
| Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB | 
| Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB | 
| Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB | 
| Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB | 
| Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB | 
| Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB | 
| Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB | 
| Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB | 
| Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB | 
| Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB | 
| Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB | 
| Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 425 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB | 
| Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 164 KiB | 
| Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB | 
| Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB | 
|  | @ -1034,12 +1034,15 @@ unlisted: true | |||
| - [[Basic_properties_of_sets]]  | ||||
| ### shell  | ||||
| 
 | ||||
| - [[Associative_arrays_maps_in_Bash]]  | ||||
| - [[Awk]]  | ||||
| - [[Bash_colour_output]]  | ||||
| - [[Bash_file_exists]]  | ||||
| - [[Bash_store_status_of_command_execution]]  | ||||
| - [[Capturing_program_error_in_Bash]]  | ||||
| - [[Capturing_user_input_in_Bash]]  | ||||
| - [[Case_statements_in_Bash]]  | ||||
| - [[Check_if_value_null_in_Bash]]  | ||||
| - [[Conditionals_in_Bash]]  | ||||
| - [[Cron]]  | ||||
| - [[Data_types_in_Bash]]  | ||||
							
								
								
									
										23
									
								
								zk/Associative_arrays_maps_in_Bash.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,23 @@ | |||
| --- | ||||
| tags: [shell] | ||||
| created: Wednesday, February 19, 2025 | ||||
| --- | ||||
| 
 | ||||
| # Associative arrays (lookup maps) in Bash | ||||
| 
 | ||||
| ```sh | ||||
| 
 | ||||
| declare -A CHANNEL_TO_WEBHOOK # Declare the map type | ||||
| 
 | ||||
| # Specify key values | ||||
| CHANNEL_TO_WEBHOOK["test"]=$SLACK_WEBHOOK_TEST | ||||
| CHANNEL_TO_WEBHOOK["backups"]=$SLACK_WEBHOOK_BACKUPS | ||||
| CHANNEL_TO_WEBHOOK["eolas"]=$SLACK_WEBHOOK_EOLAS | ||||
| CHANNEL_TO_WEBHOOK["website"]=$SLACK_WEBHOOK_SYSTEMS_OBSCURE | ||||
| CHANNEL_TO_WEBHOOK["time-tracking"]=$SLACK_WEBHOOK_TIME_TRACKING | ||||
| 
 | ||||
| # Invoke | ||||
| 
 | ||||
| WEBHOOK=${CHANNEL_TO_WEBHOOK[$CHANNEL]} | ||||
| 
 | ||||
| ``` | ||||
							
								
								
									
										44
									
								
								zk/Capturing_program_error_in_Bash.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,44 @@ | |||
| --- | ||||
| tags: [shell] | ||||
| created: Saturday, February 22, 2025 | ||||
| --- | ||||
| 
 | ||||
| # Capturing program error in Bash | ||||
| 
 | ||||
| If you want to capture possible error immediately after running the command, use | ||||
| `!`: | ||||
| 
 | ||||
| ```sh | ||||
| if ! grep "pattern" file.txt; then | ||||
|     echo "Pattern not found" | ||||
| fi | ||||
| ``` | ||||
| 
 | ||||
| If you want to store the outcome of a command and refer to it later, use `$?`. | ||||
| This built-in variable captures the exit status of the last executed command (0 | ||||
| for success, non-zero for failure): | ||||
| 
 | ||||
| ```sh | ||||
| ls -a | ||||
| status=$?  # Store immediately if needed later | ||||
| if [ $status -ne 0 ]; then | ||||
|     # handle the error case | ||||
| else | ||||
|     # command was successful (exit code = 0) | ||||
| fi | ||||
| ``` | ||||
| 
 | ||||
| Note: `$?` will be overwritten by any command that runs after the one you're | ||||
| interested in. If you need to check multiple commands' statuses, store $? | ||||
| immediately after each command: | ||||
| 
 | ||||
| ```sh | ||||
| command1 | ||||
| status1=$? | ||||
| command2 | ||||
| status2=$? | ||||
| 
 | ||||
| if [ $status1 -ne 0 ] || [ $status2 -ne 0 ]; then | ||||
|     echo "One of the commands failed" | ||||
| fi | ||||
| ``` | ||||
							
								
								
									
										14
									
								
								zk/Check_if_value_null_in_Bash.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,14 @@ | |||
| --- | ||||
| tags: [shell] | ||||
| created: Wednesday, February 19, 2025 | ||||
| --- | ||||
| 
 | ||||
| # Check if value is null in Bash | ||||
| 
 | ||||
| ```sh | ||||
| if [ -z $var ]; then | ||||
|   # Value is null | ||||
| else | ||||
|   # Value is not null | ||||
| fi | ||||
| ``` | ||||
 thomasabishop
						thomasabishop