QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3856|回复: 3

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

[复制链接]
发表于 2005-3-30 20:51:26 | 显示全部楼层 |阅读模式
我现在有一个文件filename包括有多行如下:
/var/test/a1.vec
/var/test/a2.vec
/var/test/a3.vec
.....

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

请问shell中有类似数组的数据类型吗?或者我该怎么做?
发表于 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[0]} 可得到 a (第一個組數),${A[1]} 則為第二個組數...
    ${#A[@]} 或 ${#A
  • } 可得到 4 (全部組數數量)
    ${#A[0]} 可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)
    A[3]=xyz 則是將第四個組數重新定義為 xyz ...
  • 回复

    使用道具 举报

    发表于 2005-3-31 12:00:12 | 显示全部楼层
    可用 变量$@ 或者$*
    回复

    使用道具 举报

    发表于 2005-3-31 14:27:24 | 显示全部楼层
    [quote:8a69530cce="zhy2111314"]一般而言,A="a b c def" 這樣的變量只是將 $A 替換為一個單一的字串,
    但是改為 A=(a b c def) ,則是將 $A 定義為組數...
    bash 的組數替換方法可參考如下方法:
    ${A[@]} 或 ${A
  • } 可得到 a b c def (全部組數)
    ${A[0]} 可得到 a (第一個組數),${A[1]} 則為第二個組數...
    ${#A[@]} 或 ${#A
  • } 可得到 4 (全部組數數量)
    ${#A[0]} 可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)
    A[3]=xyz 則是將第四個組數重新定義為 xyz ...[/quote]
    zhy2111314说的很详细,不妨向老吴申请下斑竹
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    GMT+8, 2024-11-3 04:14 , Processed in 0.044904 second(s), 15 queries .

    © 2021 Powered by Discuz! X3.5.

    快速回复 返回顶部 返回列表