Sponsored Content
Top Forums Shell Programming and Scripting Initialize file name bash shell - Linux Post 303026661 by Geneanalyst on Saturday 1st of December 2018 07:56:21 AM
Old 12-01-2018
Quote:
Originally Posted by Don Cragun
What you have looks like it would try to change a file named FILE_1000G.vcf to instead have the literal name $filename_1000G.vcf assuming that the only file in the directory where you run this script is named FILE_1000G.vcf.

As you know, shell variable expansions are not expanded when $variable_name appears inside single quotes. And, if your system has a rename utility, it probably won't be happy with operands that do not contain the string you're trying to replace. (I know of several systems that have a rename() function in C; but I don't have access to any that have a rename utility.) So, in case your system does have a rename utility that does what I'm guessing you're trying to do, you might want to try:
Code:
set -e
echo 'Please enter your name:'
read username
rename "s/FILE/$username/" *FILE*

Assuming that you're using a POSIX conforming shell (which you have not specified), and using just standard utilities, you might want to try something more like:
Code:
echo "Please enter your name:"
read username
for filename in *FILE*
do    if [ -f "$filename" ]
    then    prefix=${filename%%FILE*}
        suffix=${filename#*FILE}
        mv "$filename" "$prefix$username$suffix"
    fi
done

This should work in any directory containing zero or more regular files with filenames that contain the literal string FILE one or more times (replacing only the first occurrence of FILE if FILE appears more than once in a filename).

Thanks Don, I liked your 1st code, just learned something!
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

initialize file to zero

hi can anyone tell how to initialize a file to zero (3 Replies)
Discussion started by: Satyak
3 Replies

2. Shell Programming and Scripting

rm:command not found in linux Bash shell script

Hi All, Linux lxs3er06 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386 GNU/Linux Issue: While executing shell scripts in bash shell, following error messages are thrown: rm:command not found On doing little investigation, I added '/bin' to $PATH and on doing echo... (9 Replies)
Discussion started by: a1_win
9 Replies

3. Shell Programming and Scripting

PLEASE HELP! LINUX BASH SHELL SCRIPT

PLEASE HELP! NEED LINUX SCTIPT Need to write a bash shell script to show information of employees of a department from a company data set. The script should accept a project number (1/2/3/10/20/30) and output * the name of the project * the name of the manager of the controlling... (1 Reply)
Discussion started by: help123
1 Replies

4. Homework & Coursework Questions

LINUX Bash Shell Script

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Write a bash shell script that presents work information of employees of a department from a company data... (1 Reply)
Discussion started by: help123
1 Replies

5. Homework & Coursework Questions

Linux/UNIX Bash Shell Script trouble help needed!!

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 2. Shell Bash Script 3. !/bin/bash if echo no directory then mkdir -p /home/AC_Drywall elif ; then echo "$dir already exist" fi (4 Replies)
Discussion started by: TomFord1
4 Replies

6. Shell Programming and Scripting

Initialize aliases during shell script execution

Hello, I am trying to run a shell script that tests the connectivity to all the sftp servers and email if any one of them is down. There are aliases for all the servers with sftp command prefix in a '.alias' file. But when I use the alias name to run it as a command in my shell script to test... (3 Replies)
Discussion started by: Dippu
3 Replies

7. Shell Programming and Scripting

Linux/bash Script only working if executed from shell prompt

Hi, maybe I'm asking a VERY dumb question, but would anybody out there tell me, why this f****** script won't work if executed as a cronjob, but works fine if executed from a shell prompt? #! /bin/bash set PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin date >>... (3 Replies)
Discussion started by: beislhur
3 Replies

8. Fedora

Bash shell problem on Fedora Linux

My shell environment is bash and desktop environment is LXDE. When I use the up and down button on the keyboard to view the command history on bash shell, many times part of the command from the history remains on the line. For example /home/milhan > ssh somedomain.org /home/milhan > then when I... (5 Replies)
Discussion started by: milhan
5 Replies

9. Shell Programming and Scripting

UNIX Korn Shell to Linux Bash

Migrating Unix batch jobs (Korn Shell) running in HP-UX server to Linux environment. Hi All Please help me to understand the easiest way to migrate Kernel Shell scripts to Linux Bash. Also let me know 1. Any automated scripts or tools available for this. 2. Challenges and issues... (5 Replies)
Discussion started by: cpremesh
5 Replies

10. UNIX for Beginners Questions & Answers

Bash Shell Linux

I have a csv file that looks like this Name,Food,Sport James,Curry,Gym Darren,Pizza,Football Jim,Fish,Hockey James,Sushi,Tennis My code looks like this IFS="," sed 1d $file_name | while read Name Food Sport do mkdir -p $Name #echo "==================" #echo "Name: $Name" (3 Replies)
Discussion started by: darklord173
3 Replies
FOPEN(3S)																 FOPEN(3S)

NAME
fopen, freopen, fdopen - open a stream SYNOPSIS
#include <stdio.h> FILE *fopen(filename, type) char *filename, *type; FILE *freopen(filename, type, stream) char *filename, *type; FILE *stream; FILE *fdopen(fildes, type) char *type; DESCRIPTION
Fopen opens the file named by filename and associates a stream with it. Fopen returns a pointer to be used to identify the stream in sub- sequent operations. Type is a character string having one of the following values: "r" open for reading "w" create for writing "a" append: open for writing at end of file, or create for writing Freopen substitutes the named file in place of the open stream. It returns the original value of stream. The original stream is closed. Freopen is typically used to attach the preopened constant names, stdin, stdout, stderr, to specified files. Fdopen associates a stream with a file descriptor obtained from open, dup, creat, or pipe(2). The type of the stream must agree with the mode of the open file. SEE ALSO
open(2), fclose(3) DIAGNOSTICS
Fopen and freopen return the pointer NULL if filename cannot be accessed. BUGS
Fdopen is not portable to systems other than UNIX. FOPEN(3S)
All times are GMT -4. The time now is 08:37 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy