[已解决]sh-bash编程疑难求助

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

[已解决]sh-bash编程疑难求助

#1

帖子 careone » 2013-01-10 12:16

sh-bash编程疑难求助:

1. 参数输入不齐或缺少参数时,如何判定并退出程序?
2. 如何实现求整运算?

应用目的:
通过 emacs-locale.zh_CN 把当前 Emacs 菜单切换为简体中文/英文界面
完整的主程序见这里: viewtopic.php?f=17&t=212467

命令行:
$sudo emacs-locale.zh_CN -g 24 zh_CN
对应变量: $0 $1 $2 $3

代码如下:
#!/bin/sh
#
## 已解决 1
## 如果未输入变量 $3 ,提示变量错误并退出程序
if [ "$#" -lt 3 ];then
echo "bad argument or argument not enouth. Quit."
exit 1 ;
fi

## 1 结束

## 已解决 2
# 将输入的 Emacs 子版本号通过求整运算,得到主版本号
VAR_MAJOR_VER=$(echo "scale=0; $2 / 1" | bc)
## 2 结束
#
## 原方案 2 (已废弃):
case "$2" in
22 | 22.1 | 22.2 | 22.3)VAR_MAJOR_VER=22 ;;
23 | 23.1 | 23.2 | 23.3 | 23.4)VAR_MAJOR_VER=23 ;;
24 | 24.1 | 24.2 | 24.3)VAR_MAJOR_VER=24 ;;
*)VAR_MAJOR_VER='*' ;;
esac
## 原方案 2 结束

echo "translate Emacs version '$2' to language '$3'..."
echo "updating /etc/emacs${VAR_MAJOR_VER}/site-start.d/86*.el ..."
echo "..."
上次由 careone 在 2013-03-19 12:14,总共编辑 2 次。
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: sh-bash编程疑难求助

#2

帖子 YeLee » 2013-01-10 12:21

参数个数检查倒可以试一下$#,至于数学的问题,表示不是很了解,bc做一些基本运算倒是还可以。
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: sh-bash编程疑难求助

#3

帖子 careone » 2013-03-19 12:14

感谢2楼 YeLee 兄的提示!问题已解决,1楼已更新
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
回复