diamond99 发表于 2005-3-30 20:51:26

shell编程请教:获取文件名的方法,

我现在有一个文件filename包括有多行如下:
/var/test/a1.vec
/var/test/a2.vec
/var/test/a3.vec
.....

我想用basename `grep vec filename`获取到各个文件名称a1.vec, a2.vec......后再分别对其进行下一步操作,可是好像无法在shell中应用数组一类的变量来保存,结果最后只能得到最后一个文件的名称,

请问shell中有类似数组的数据类型吗?或者我该怎么做?

zhy2111314 发表于 2005-3-31 08:38:19

一般而言,A="a b c def" 這樣的變量只是將 $A 替換為一個單一的字串,
但是改為 A=(a b c def) ,則是將 $A 定義為組數...
bash 的組數替換方法可參考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)
${A} 可得到 a (第一個組數),${A} 則為第二個組數...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量)
${#A} 可得到 1 (即第一個組數(a)的長度),${#A} 可得到 3 (第四個組數(def)的長度)
A=xyz 則是將第四個組數重新定義為 xyz ...

BOoRFGOnZ 发表于 2005-3-31 12:00:12

可用 变量$@ 或者$*

ajinn 发表于 2005-3-31 14:27:24

一般而言,A="a b c def" 這樣的變量只是將 $A 替換為一個單一的字串,
但是改為 A=(a b c def) ,則是將 $A 定義為組數...
bash 的組數替換方法可參考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)
${A} 可得到 a (第一個組數),${A} 則為第二個組數...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量)
${#A} 可得到 1 (即第一個組數(a)的長度),${#A} 可得到 3 (第四個組數(def)的長度)
A=xyz 則是將第四個組數重新定義為 xyz ...
zhy2111314说的很详细,不妨向老吴申请下斑竹
页: [1]
查看完整版本: shell编程请教:获取文件名的方法,