[megoldva]basic /bin/bash help.

Sziasztok!

Rendszer:
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
debian jessie

Az alábbi szkriptben nem sikerül összeragasztani a stringeket. A feladat annyi lenne, hogy van egy lista fájl list1 amiben fájlnevek vannak kiterjesztés nélkül
fáj lista:
# cat list1

i80qcb2m03m95d0a24a8kexk
i80s0rz603m95d0a24eo5cx0

A szkriptnek kéne ráragasztania a kiterjesztést illetve elé rakni az elérési útvonalat.
A szkript:
# cat mklist.sh

#!/bin/bash
NFS="/nfs3/www-data/"
EXT=".mp4"
for I in `cat list1`; do
J=$NFS$I$EXT
echo $J
done

# ./mklist.sh

.mp43/www-data/i80qcb2m03m95d0a24a8kexk
.mp43/www-data/i80s0rz603m95d0a24eo5cx0

Kicsit módosítottam a szkriptet, azt hittem a "."-al van baja, de még mindig nem értem mi történik:
új szkript:
#cat mklist.sh

#!/bin/bash
NFS="/nfs3/www-data/"
EXT="mp4"
for I in `cat list1`; do
J="$NFS"
echo $J
J+="$I"
echo $J
J+="$EXT"
echo $J
done

Az eredmény változatlan:
# ./mklist.sh

/nfs3/www-data/
/nfs3/www-data/i80qcb2m03m95d0a24a8kexk
mp4s3/www-data/i80qcb2m03m95d0a24a8kexk
/nfs3/www-data/
/nfs3/www-data/i80s0rz603m95d0a24eo5cx0
mp4s3/www-data/i80s0rz603m95d0a24eo5cx0

A feladat megoldásában szeretnék segítséget kérni. Előre is köszi mindenkinek.

megoldás:
( 1soproni | 2015. május 7., csütörtök - 7:55 )
( kallo | 2015. május 7., csütörtök - 8:05 )

Hozzászólások

Nekem hibátlan az első megoldással is.

csaba@nec-laptop /tmp $ bash -version
GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu) verzió
Copyright (C) 2013 Free Software Foundation, Inc.
A licenc GPLv3+: a GNU GPL 3. vagy újabb változata

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

csaba@nec-laptop /tmp $ cat list1
i80qcb2m03m95d0a24a8kexk
i80s0rz603m95d0a24eo5cx0

csaba@nec-laptop /tmp $ cat mklist.sh
#!/bin/bash
NFS="/nfs3/www-data/"
EXT=".mp4"
for I in `cat list1`; do
J=$NFS$I$EXT
echo $J
done

csaba@nec-laptop /tmp $ ./mklist.sh
/nfs3/www-data/i80qcb2m03m95d0a24a8kexk.mp4
/nfs3/www-data/i80s0rz603m95d0a24eo5cx0.mp4

Igy probald:

#! /bin/bash

NFS="/nfs3/www-data/"
EXT=".mp4"
LISTFILE="list1"

while read filename; do
  echo "$NFS$filename$EXT"
done < "$LISTFILE"

Én inkább sed-del csinálnám:

$ cat list1
i80qcb2m03m95d0a24a8kexk
i80s0rz603m95d0a24eo5cx0

$ sed "s,^\(.*\),/nfs3/www-data/\1.mp4," list1
/nfs3/www-data/i80qcb2m03m95d0a24a8kexk.mp4
/nfs3/www-data/i80s0rz603m95d0a24eo5cx0.mp4