Visit Our UNIX and Linux User Community


How the below command works?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How the below command works?
# 1  
Old 08-08-2013
How the below command works?

hi,
can any one explain the below command. run it and see and if you understand please tell me.
Code:
File=s1_abc.txt.xls.pdf
MOD_File=$(echo ${File%.*}_`date +%Y%m%d_%H%M%S%N`.${File##*.})

i asked somedays before and got the above code. i needed to add date time stamp just before the last extension of the filename.

if i use the below command, it removes the last extension from the filename
Code:
echo ${File%.*}

output is:
s1_abc.txt.xls

if i use echo ${File%.*.*} , it removes the last two extensions

output is:
s1_abc.txt

echo ${File##*.} gives me the last extension i.e. pdf

echo ${File#*.} gives me all the extension i.e. txt.xls.pdf

how the above command works especially % and #
# 2  
Old 08-08-2013
You pretty much described it yourself. % and # are pattern-matching-and-delete-operators.

${variable#pattern} and ${variable##pattern}... if pattern matches the beginning of the value of variable, then the expression is the value of the variable with the matched portion deleted. If there is no match, the expression is the entire value of the variable. With one #, the smallest matching pattern is deleted, with two ## the largest.

The % operator does the same at the end of the variable.
# 3  
Old 08-08-2013
# - remove prefix pattern
% - remove suffix pattern

see discussion on parameter expansion in man bash or man ksh for more info ...

Previous Thread | Next Thread
Test Your Knowledge in Computers #106
Difficulty: Easy
A kernel is at the heart of the Linux OS; and this kernel acts as an interface between the user and underlying hardware.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Command works at command line but not from cron

Oracle Linux 6. Trying to set up a simple monitoring of memory usage. This command does exactly what I want at the command line: echo $(date +%Y-%m-%d" "%H:%M:%S) $(grep PageTables /proc/meminfo) >> /home/oracle/meminfo.logBut when I put it in my crontab: * * * * * echo $(date +%Y-%m-%d"... (2 Replies)
Discussion started by: edstevens
2 Replies

2. Shell Programming and Scripting

Cp command works on command line but not in bash

The below command moves all the .vcf files into the directory. cp /home/cmccabe/Desktop/test/vcf/overall/stats/*.vcf /home/cmccabe/Desktop/NGS/annovar When I use a bash wrapper the target.txt gets created but the text files do not get copied. All the paths are the same, but not sure why... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. UNIX for Dummies Questions & Answers

Shell script not working but command works in command prompt

Hi everyone I have a problem with my script If I try directly this command /usr/bin/nice -n 19 mysqldump -u root --password="******" wiki_schneider -c | nice -n 19 gzip -9 > /point_de_montage/$(date '+%Y%m%d')-wiki-db.sql.gz It works But if I simply add this command in a script and... (8 Replies)
Discussion started by: picemma
8 Replies

4. Shell Programming and Scripting

Works on command line but not in script

OSX 10.9 I am building a script that evaluates the difference between 2 files. Here is a command that does not work transparently. Running this command in Terminal yields great results; however when I put that line in a .sh script, I get the errors shown below. Am I doing something silly? ... (1 Reply)
Discussion started by: sudo
1 Replies

5. Programming

How Readelf command works?

Hello all I want to read program header of a executable without using readelf. I know it can be tough. I will do the programming myself. Just give me a hint of it. Thanks ---------- Post updated at 05:02 AM ---------- Previous update was at 04:58 AM ---------- basically i want to count... (3 Replies)
Discussion started by: aditya08
3 Replies

6. Shell Programming and Scripting

SH script, variable built command fails, but works at command line

I am working with a sh script on a solaris 9 zone (sol 10 host) that grabs information to build the configuration command line. the variables Build64, SSLopt, CONFIGopt, and CC are populated in the script. the script includes CC=`which gcc` CONFIGopt=' --prefix=/ --exec-prefix=/usr... (8 Replies)
Discussion started by: oly_r
8 Replies

7. Solaris

no command works after i created new partition!!!

This was my intial setup of the partition table. Part Tag Flag Cylinders Size Blocks 0 root wm 259 - 2666 4.70GB (2408/0/0) 9863168 1 swap wu 3 - 258 512.00MB (256/0/0) 1048576 2 backup wm 0 -... (8 Replies)
Discussion started by: chidori
8 Replies

8. Shell Programming and Scripting

help with shell script: cp command not working, but mv command works...

Hello. I would like to ask your help regarding the cp command. We are using a cp command to create a back-up copy of our file but to no avail. It's just not working. We already checked the file and directory permissions and all seems correct. We have a script (ftp.script) which calls on... (1 Reply)
Discussion started by: udelalv
1 Replies

9. UNIX for Dummies Questions & Answers

Works on command line but not in script

Hey guys. Hopefully this is an easy one but having reference similar problems on the web I still can't fix it. I am doing a recursive find and replace from a script. Of course I could just run the damn thing from the command line but it's bugging me now and want to get it working. grep -rl... (4 Replies)
Discussion started by: anthonyjstewart
4 Replies

10. UNIX for Dummies Questions & Answers

Command only works in it's own directory

Unix/Darwin/MacOSX Terminal -- and I'm a newby. I have a file called 'symfony' here: /opt/sf/data/bin/symfony If I go: cd /opt/sf/data/bin and then, ./symfony -V It responds with the version number (like it should) Great. However, if I go to another directory: (1 Reply)
Discussion started by: pipp
1 Replies

Featured Tech Videos