![如何使用命令 cal 创建 shell 脚本](https://linux22.com/image/181200/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%20cal%20%E5%88%9B%E5%BB%BA%20shell%20%E8%84%9A%E6%9C%AC.png)
我想创建一个 shell 脚本,使执行该脚本的用户在输入月份和年份时出现,但这样做时出现此错误,有人可以帮助我吗?
所有这些都将使用 cal 命令
这是我的脚本
#!/bin/bash
cal "" ""
echo Write month and year
read cal
echo $cal
这就是错误
Write month and year
cal: year `' not in range 1..9999
我该如何解决这个问题?
答案1
这就是您的脚本实际上正在做的事情:
#!/bin/bash
## Run the command 'cal' with two empty strings as arguments
cal "" ""
## print the string "Write month and year"
echo Write month and year
## read whatever value was given into the single variable "$cal"
read cal
## print out the contents of the variable "$cal"
echo $cal
我认为你的意思是:
#!/bin/sh
read -p "Write month and year: " month year
cal "$month" "$year"
然后,您将按如下方式运行(在示例中,用户输入4
和2020
):
$ foo.sh
Write month and year: 4 2020
April 2020
Su Mo Tu We Th Fr Sa
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
当然,这似乎没有什么意义,因为您实际上并没有向本机cal
命令添加任何内容:
$ cal 4 2020
April 2020
Su Mo Tu We Th Fr Sa
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
答案2
#!/bin/bash
echo "enter the year"
read y
echo "enter the month"
read m
cal -m $m $y
使用-m选项后测试并工作在ubuntu系统中测试
January 2020
Su Mo Tu We Th Fr Sa
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