0
#!/bin/bash

/abc/qwerty/AAAooo/testing/CBA_Car/Config/Test_Ctr.env

OUTPUT_FILE_NAME=$1
DATE=$2

cp /abc/section/AAAooo/CBACenter/slack_2010-05-1.txt ${OUTPUT_FILE_NAME}

How do I perform a count within this script and only output the count? Somehow I need to be able to count rows within this shell script and output the count value. I think I may need to do something like this:

cat filename.txt | wc -l

However, I am not sure how to input it correctly so the syntax works out fine. It keeps giving me an error. The count needs to be done in this line:

cp /abc/section/AAAooo/CBACenter/slack_2010-05-1.txt ${OUTPUT_FILE_NAME}

closed as unclear what you're asking by Jesse_b, Jeff Schaller, Thomas, RalfFriedl, jimmij Nov 16 '18 at 8:53

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 2
    Which file do you ant to count the lines of? The script being run or the file being copied? – Jesse_b Nov 15 '18 at 21:27
  • The file being copied – ihoaxed Nov 15 '18 at 22:12
  • @ihoaxed The (standard) cp command does not put the file contents through the pipe. It will just copy the file, producing no output (save for erroring). You will need to later do wc -l /path/to/your/file.txt – Stan Strum Nov 15 '18 at 22:18
  • Actually, errors won't go to output either (redirection notwithstanding); they go do standard error. – DopeGhoti Nov 15 '18 at 22:20
  • You might want to edit your question, adding the command that gives you an error and the actual text of the error. It would probably make easier to understand what exactly is the result you are expecting. – fra-san Nov 15 '18 at 23:12
0

You can do it by below method

#!/bin/bash
cp $1 $2
wc -l $2

Above script will copy the $1(file1) content to $2(file2) and after being copied to second file. it will print count of lines in file2

We should execute script as below

sh scriptname file1 file2

$1=file1
$2=file2
1

cp (normally) does not output anything. If you use cp -v, it will output the name of each file it is copying, but not their contents.

UNIX-like environments are generally quite good at having tools that do precisely one job, and do it well. Counting the lines in a file (the job of wc) is not in the demesne of a tool whose job is to copy files from one location to another (e. g. cp).

If you want to count the lines in a file and also copy it, you need to do these two separate tasks separately.

$ cp /old/path/to/file /new/path/to/file
$ filelength="$( wc -l < /path/to/file )"
  • 1
    But not with UUOC? Try wc -l < file – RudiC Nov 16 '18 at 8:59
  • I forgot about indirection. I originally had wc -l file | awk '{print $1}' to strip out the filename, but indirection is much better. Good catch. – DopeGhoti Nov 16 '18 at 15:50

Not the answer you're looking for? Browse other questions tagged or ask your own question.