Programming/Bash: Difference between revisions
Jump to navigation
Jump to search
Brodriguez (talk | contribs) (Create page) |
Brodriguez (talk | contribs) (Create string manipulation section) |
||
Line 33: | Line 33: | ||
# Logic for false. | # Logic for false. | ||
fi | fi | ||
== String Manipulation == | |||
See https://stackoverflow.com/a/14703709 | |||
With bash, it's possible to dynamically trim strings, based on regex matches.<br> | |||
The syntax is: | |||
# Trim shortest match from beginning. | |||
${<string_value>#<regex>} | |||
# Trim longest match from beginning. | |||
${<string_value>##<regex>} | |||
# Trim shortest match from end. | |||
${<string_value>%<regex>} | |||
# Trim longest match from end. | |||
${<string_value>%%<regex>} | |||
For example, if you have a string of | |||
file_name="/home/user/my_dir/my_dir/my_file.tar.gz" | |||
Then you can do the following manipulations: | |||
# Get the full file extension. | |||
# Outputs "tar.gz" | |||
${file_name#*.} | |||
# Get the last part of the file extension. | |||
# Outputs "gz" | |||
${file_name##*.} | |||
# Get the full file name, including file extension. | |||
# Outputs "my_file.tar.gz" | |||
echo "b: ${file_name##*/} | |||
# Get parent of current directory. | |||
# Outputs "/home/user/my_dir/" | |||
${file_name%my_dir/*} | |||
# Get grandparent of current directory. | |||
# Outputs "/home/user/" | |||
${file_name%%my_dir/*} |
Revision as of 14:24, 13 February 2020
Bash is primarily a Linux scripting language, but it works on all versions of Windows as well, if used through git.
Comments
# This is an inline comment
Variables
Variable Definition
a_bool=true b_bool=false my_var="This is a string."
Variable Usage
echo "Printing variable values." echo $a_bool echo $b_bool echo ${my_var_1}${my_var_2}
If Statements
Basic If
if [[ $x == $y ]] then # Logic if true. fi
Full If
if [[ $x == $y ]] then # Logic for "if" true. elif [[ $x && ($y || $z) ]] then # Logic for "else if" true. else # Logic for false. fi
String Manipulation
See https://stackoverflow.com/a/14703709
With bash, it's possible to dynamically trim strings, based on regex matches.
The syntax is:
# Trim shortest match from beginning. ${<string_value>#<regex>} # Trim longest match from beginning. ${<string_value>##<regex>} # Trim shortest match from end. ${<string_value>%<regex>} # Trim longest match from end. ${<string_value>%%<regex>}
For example, if you have a string of
file_name="/home/user/my_dir/my_dir/my_file.tar.gz"
Then you can do the following manipulations:
# Get the full file extension. # Outputs "tar.gz" ${file_name#*.} # Get the last part of the file extension. # Outputs "gz" ${file_name##*.} # Get the full file name, including file extension. # Outputs "my_file.tar.gz" echo "b: ${file_name##*/} # Get parent of current directory. # Outputs "/home/user/my_dir/" ${file_name%my_dir/*} # Get grandparent of current directory. # Outputs "/home/user/" ${file_name%%my_dir/*}