Linux Shell ${} simple usage

Source: Internet
Author: User

Suppose we define a variable as:

File=/dir1/dir2/dir3/my.file.txt

We can replace each other with ${} to get different values:

${file#*/}: Take out the first/its left string: dir1/dir2/dir3/my.file.txt

${file##*/}: Take out the last/and left string: my.file.txt

${file#*.} : Take out the first one. And the string to the left: file.txt

${file##*.} : Take out the last one. And the string to the left: txt

${file%/*}: Take off the last bar/its right string:/dir1/dir2/dir3

${file%%/*}: Remove the first/its right string: (null value)

${FILE%.*}: Take off the last one. And the string to the right:/dir1/dir2/dir3/my.file

${FILE%%.*}: Take out the first one. And the string to the right:/dir1/dir2/dir3/my

The methods of memory are:

# is to remove the left side (on the plate # on the left of the $)

% is removed to the right (on the plate% on the right of the $)

The single symbol is the minimum match, and the two symbol is the maximum match.

${file:0:5}: Extract the leftmost 5 bytes:/dir1

${file:5:5}: Extracts the 5th byte to the right of 5 consecutive bytes:/DIR2

We can also replace the string in the value of the variable:

${file/dir/path}: Change the first dir to Path:/path1/dir2/dir3/my.file.txt

${file//dir/path}: Change all dir to path:/path1/path2/path3/my

With ${} You can also assign values to different variable states (no settings, null values, non-null values):

${file-my.file.txt}: If $file is not set, use My.file.txt to return the value. (null value and non-

Null value is not processed)

${file:-my.file.txt}: If the $file is not set or null, use My.file.txt to return the value. (

Non-null value is not processed)

${file+my.file.txt}: If the $file is set to a null value or a non-null value, the value is returned using My.file.txt. (No

Not processed when set)

${file:+my.file.txt}: If $file is a non-null value, use My.file.txt as the return value. (Not set and empty

Value is not processed)

${file=my.file.txt}: If $file is not set, use My.file.txt to return the value, while assigning $file

The value is my.file.txt. (null and non-null values are not processed)

${file:=my.file.txt}: If $file is not set or null, use My.file.txt to return the value, and

The $file is assigned a value of My.file.txt. (Non-null value is not processed)

${file?my.file.txt}: If the $file is not set, the My.file.txt output to stderr. (null value and non-

Null value is not processed)

${file:?my.file.txt}: If the $file is not set or null, the my.file.txt output to STDERR. (

Non-null value is not processed)

The above understanding is that you must distinguish between Chu unset and null and non-null these three kinds of assignment states.

In general,: null is not affected if not with: null is also affected if the band: null.

And oh, ${#var} to calculate the length of the variable value:

${#file} can get 27 because/dir1/dir2/dir3/my.file.txt is just 27 bytes ...


This article is from the "Baby God" blog, make sure to keep this source http://babyshen.blog.51cto.com/8405584/1762054

Linux Shell ${} simple usage

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.