我对shell很新。我需要从shell函数返回多个值,这就是我将参数作为参数发送到函数的原因,就像我们在编程语言中使用指针一样。 我正在调用这个函数
splitDate $date day month year
这里的一个月&年是我想要存储值的变量。 我的函数定义如下所示
splitDate(){
export IFS="/"
declare -a var
index=0
for word in $1; do
var[ $index ]=$word
((index++))
done
$2=${var[0]}
$3=${var[1]}
}
当我运行此操作时,我收到此错误" day = theValueIWant:command not found" &" month = theValueIWant:找不到命令" 这里有什么不对? 测试用例:如果我提供04/05/2017作为日期 我希望每天存储04,月份来存储05& 2017年存储年
答案 0 :(得分:3)
您可以使用read
。 read
的参数是要填充的变量的名称,可以通过参数扩展以及硬编码来生成。
splitDate(){
if [[ $1 != ??/??/???? ]]; then
printf '%s\n' "Date not in dd/mm/yyyy format" >&2
return 1
fi
IFS=/ read -r "$2" "$3" "$4" <<< "$1"
}
提出了这个问题,你真的需要一个单独的功能吗?
# splitDate "$currentDate" day month year
# vs
# IFS=/ read -r day month year <<< "$currentDate"