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 )
- 1778 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
Ettől féltem, de bíztam benne, hogy csak én vagyok béne. Ezen a rendszeren ez a legfrissebb bash ami csomagból elérhető :(
- A hozzászóláshoz be kell jelentkezni
Az enyém régebbi.
Nekem lehet, hogy a list1 fájlban vannak valami speckó karakterek?
- A hozzászóláshoz be kell jelentkezni
Valóban régebbi és tényleg. Egy webes apiból jön a lista és dos sorvégeket tartalmaz. Köszönöm szépen a megoldást.
- A hozzászóláshoz be kell jelentkezni
Igy probald:
#! /bin/bash
NFS="/nfs3/www-data/"
EXT=".mp4"
LISTFILE="list1"
while read filename; do
echo "$NFS$filename$EXT"
done < "$LISTFILE"
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni
köszi, A sed eszembe se jutott.
- A hozzászóláshoz be kell jelentkezni