我是bash的新手,所以我对bash中的正则表达式语法并不多。我试图从文件路径数组中删除___.xml
部分并尝试将其存储在临时变量中。然后我将cat
临时变量。原因是因为我将在另一部分中使用该数组。到目前为止,我有这个代码(当然有一个错误),它不会输出任何内容:
files=()
files+=/server/1.0/hostname/filename.xml
files+=/server/1.0/hostname/another_file.xml
for (( i = 0 ; i<${#files[@]} ; i++ )); do
cat ${files[$i]} 2> /dev/null
done
我想要做的是在for循环中创建一个temp
var,看起来像这样:
files=()
files+=/server/1.0/hostname/filename.xml
files+=/server/1.0/hostname/another_file.xml
for (( i = 0 ; i<${#files[@]} ; i++ )); do
temp=`echo ${files[$i]} | ADD REGEX HERE`
cat $temp 2> /dev/null
done
有没有办法这样做?谢谢!
答案 0 :(得分:1)
BASH数组处理中存在语法问题。试试这个:
files=()
files+=(/server/1.0/hostname/filename.xml)
files+=(/server/1.0/hostname/another_file.xml)
for f in "${files[@]}"; do
cat "$f" 2>/dev/null
done
答案 1 :(得分:1)
这将打印文件的基名。我认为这就是你要求的东西?
#!/bin/bash
files=()
files+=(/server/1.0/hostname/filename.xml)
files+=(/server/1.0/hostname/another_file.xml)
for f in "${files[@]}"; do
echo ${f##*/}
done