用Shell编写for循环和while循环案例
(1)Shell中的单引号和双引号区别 A="www.jfedu.net" B='$A' echo $B 注释: 把www.jfedu.net赋值给变量A,把变量A的内容赋值给变量B,打印出变量B的结果,打印出的结果为$A 因为变量A是一个弱引用,引用的结果只是一个字符 A="www.jfedu.net" B="$A" echo $B 注释: 把www.jfedu.net赋值给变量A,打印出变量B的结果,打印出的结果为www.jfedu.net 因为变量A是一个强引用,变量B的引用结果是www.jfedu.net,而不是一个字符 (2)for循环语法格式 for var in (表达式) do 语句 done (3) 用for循环打印1到100 for i in `seq 1 100` do echo $i done 注释: 单引号和双引号只适用于变量引用,涉及到计算,不能用单引号和双引号 拓展 用for循环打印1到100另外二种写法 for i in $(seq 1 100) do echo $i done for i in `echo {1..100}` do echo $i done 注释: echo后面不要忘记加空格,不加空格,会报错 (4) 用for循环读取文件内容,并打印到屏幕上 for i in `cat list.txt` do echo $i done (5) 用for循环批量到远程主机执行命令 command="$*" for i in `seq 1 100` do ssh -l root 192.168.1.$i "$command" done (6)用for循环批量到远程主机传输文件 files="$*" for i in `seq 1 100` do scp -r $files root@192.168.1.$i:/tmp done (7)用for循环输出1到100的和 j=0 for i in `seq 1 100` do j=`expr $i+$j` done echo $j (8) while循环格式 while (表达式) do 语句 done (9) 用while循环读取文件列表内容,并把结果打印在屏幕上 while read line do echo $line done<list.txt (10) 用while循环,每隔一秒在屏幕上输出hello word while sleep 1 do echo "hello word" done (11) 用while循环,打印1到100 i=0 while(i<=100) do echo $i i=`expr $i+1` done (12) while循环打印1到100的和 j=0 i=1 while(i<=100) do j=`expr $i+$j` ((i++)) done echo $j 拓展: ssh免秘钥登录到远程服务器 (1) 在本机上创建ssh-keygen (2) 拷贝公共秘钥到“被登录机”,输入密码 ssh -l root 192.168.1.5 id_rsa.pub (3) ssh到“被登录机”把公共秘钥输入到“authorized _keys”(如果有多个机器都需要使用rsa秘钥认证登录到此机的话,把产生的公共秘钥输入到authorized_keys) cat id_rsa.pub >> authorized_keys (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |