您可以使用内置命令cal,例如:
cal 10 2013
您将获得2013年10月的日历。我的老师制作并指定以某种方式更改第一个参数,我们可以用我们的母语调用此函数。例如:
cal spalis 2013
cal gruodis 1999
等等.. (spalis意为十月,gruodis - 十二月在我的国家) 我们会看到与cal 10 2013或cal gruodis 1999相同的结果
与其他月相同。我是shell的新手,并且认为我可以创建一个别名:
alias spalis=10
然后我尝试使用cal spalis 2013,但我收到了错误:
cal: spalis is neither a month number (1..12) nor a name
所以,谷歌搜索了一段时间后,我想有没有办法传递别名作为参数?或者我做错了什么?也许有其他方式?我会非常感谢你的建议,对不好的英语抱歉:)
答案 0 :(得分:2)
cal
接受当前语言环境指定语言的月份名称。要接受立陶宛月份名称,请使用
$ LANG=lt_LT cal spalis 2013
Spalio 2013
Sk Pr An Tr Kt Pn Št
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
这取决于您使用的cal
版本。以上工作在我的MacOS X 10.9机器上,但不在我的一个Linux机器上(cal
根本不接受月份名称,只有数字)。
这可能不是您老师正在寻找的,因为它只需要按预期使用该程序。 :)
答案 1 :(得分:1)
别名仅适用于命令名称,不适用于参数。你要做的是编写一个函数cal
,它用适当的数字替换第一个参数,然后调用常规cal
二进制文件。
cal() {
local month=$1
local year=$2
# replace named $month with a numeric $month here
...
# Call the real cal. `command' ignores this function and calls the underlying binary.
command cal "$month" "$year"
}