假设有一个名为getfield
的shell函数,它将字段名作为参数,并在标准输出中写入相应的字段(或列(号。
#!/bin/bash
fieldname=$1
function getfield {
}
cut -f$(getfield $fieldname) -d| 2album
这是我的文件2album
:
artist|title|name|year
Depeche Mode|Speak and Spell|Mute Records|1991
Depeche Mode|Speak and Spell|Mute Records|1991
Depeche Mode|Speak and Spell|Mute Records|1991
Depeche Mode|Speak and Spell|Mute Records|1991
Depeche Mode|Speak and Spell|Mute Records|1991
Depeche Mode|Speak and Spell|Mute Records|1991
我的函数应该是什么样子。在我的例子中是空的。
您可以使用case
语句来执行其他语言中等效的switch
块。默认情况为*)
,用于在stderr上显示错误,如果没有匹配的情况,则返回非零错误代码。
getfield() {
local name="$1"
case "$name" in
artist) echo 1;;
title) echo 2;;
name) echo 3;;
year) echo 4;;
*) echo "$0: $name: unknown field" >&2; return 1;;
esac
}