shell script循环语法与个别注意事项

shell 执行方式的区别:

1 ,直接执行 sh *.sh ./*.sh 是开一个子进程来执行脚本,,进程完成后,子进程的各项变量和操作会结束,不会传回到父进程中。

2,sourece *.sh是在父(当前)进程中执行。

利用 test 和 判断符号 [] 做判断

例: test -e /fileOrdir && echo "exist" || echo "Not exist" 查看当前文件名是否存在 存在打印 exist 不存在 打印 Not exist

[ -z "$HOME" ]; echo "$?" 注:中括号两边必须有空格来分隔

下面是一些 常用字符 所代表的意思, 不至test 、 [] 、shell 的循环和if 中也会用到

shell script 的默认变量($0 , $1 …)

$0 代表脚本名字 $1 代表脚本后面的第一个参数 $2 代表脚本后面的第二个参数

$# : 代表参数个数 包括脚本名字 $0

$@ : 代表全部变量

$* :大体同上

输入: sh sh07.sh one two

例: echo "The script name is ===> $0" # 输出 sh07.sh

echo "total param number is ===> $#" #输出 3

[ "$#" -lt 2 ] && echo "number of parameter is less than 2 stop here " && exit #判断参数小于 2个 退出

echo "your whole param is ===> ‘$@’ " # 打印全部参数 one two three

echo "the 1st param is ====> $1 " ##打印打一个参数 one

echo "the 2ed param is ====> $2 " ##打印第二个参数 two

shift 可以造成参数偏移

sh sh08.shone two three four five six

echo "total param is ====> $#" # 7

echo "your whole param is ====> ‘$@’ " #one two three four five six

shift # 进行一次偏移 后面可以带数字 shift 2 代表偏移两次

echo "total param is ====> $#" 6 偏移两次 5

echo "your whole param is ====> ‘$@’ " # two three four five six 偏移两次 three four five six

条件判断式:

if ….. then

….

fi # if 的结束是 if 反过来

例:

if [ "$yn" == "Y" ] || [ "$yn" == "y" ];then # -o 等于 || (or) -a 等于&& (and) ! 非

echo "ok "

exit 0 #程序结束 返回 0 相当于return

fi

case esac (同语言的switch case语法)

case $变量名称 in

"第一个选择项内容")

程序段

;; 两个;; 相当于 break

"第二个选择项内容")

程序段

;; 两个;; 相当于 break

*)相当于 define 其他的所有选项

程序段

;;

esac

输入: ./xxx.sh one

例:

case $1 in

"hehe")

echo "you input hehe"

;;

"one")

echo "you input one"

;;

*)

echo "you input other $1"

;;

esca

shell script 函数:

function fucName(){

程序段

}

循环:

while [条件] #条件成立则执行循环

do

程序段

done

util [条件] #条件成立则停止循环

do

程序段

done

for var in con1 con2 …

do

程序段

done

例:

for animal in dog cat elephant

do

echo "$animal" #第一次执行时 animal == dog 第二次为cat 第三次为 elephant

done

users= $(cut -d ":" -f1 /etc/passwd)

for username in $users

do

echo “$username” #会打印出所有的名字

done

for ( (初始值; 限制值; 执行步长) )

do

程序段

done

例:

s = 0

for ( (i=1; i <= $nu; I=i+1 ) )

do

s = $( ($s + $i) )

done

echo "the relust 0f 1+2+3+…+$nu is $s" #累加计算到输入的值

shell script 的追踪及调试

sh [-nvx] script.sh

-n不执行script,只查询语法问题 若无语法错误 屏幕不会显示任何信息

-v 执行script前,先将script的内容输出到屏幕上

-x将script的执行过程全显示到屏幕上,用户可以根据执行此看出执行那一段会出错,并修改自己的脚本。非常好的功能

多看,多模仿网上的相当有用的script,并加以修改成自己的script。是最快的学习手段。

冬天已经到来,春天还会远吗?

shell script循环语法与个别注意事项

相关文章:

你感兴趣的文章:

标签云: