Bash - 从循环中获取basename

时间:2013-11-26 10:15:41

标签: bash shell ssh debian

我想从循环中获取basename,但这只会返回"*"

FILES=("/home/aaaa/bbbb/*") #Get all folders
for f in "${FILES[@]}"
do
  basename "$f"
done

我做错了什么?

2 个答案:

答案 0 :(得分:5)

你甚至不需要像这样创建一个数组并执行你的循环:

for f in /home/aaaa/bbbb/*
do
  # get the basename using pure BASH
  base="${f##*/}"
  echo "base is: $base"
done

答案 1 :(得分:3)

通过使用("/home/aaaa/bbbb/*"),只使用一个文字字符串"/home/aaaa/bbbb/*"创建一个数组。

相反,摆脱引号并简单地说:

FILES=(/home/aaa/bbb/*)
for f in "${FILES[@]}"
do
  basename "$f"
done