如何在windows7 linux shell下使用linux的shell脚本

『Linux的路途』:省时省力的shell脚本,进阶篇
『Linux的路途』:省时省力的shell脚本,进阶篇
feintkotlin
前一天(全文2204个字,阅读时间:1分30秒)Shell,进击!!在上一篇文章中为大家讲解了shell中的变量、数组、字符串以及注释。(没有看过的小伙伴可以先阅览下文字上方的入门篇)今天为大家讲述的内容主要由以下几个部分组成:参数传递运算控制语句函数在上篇文章中有一个创建脚本文件的小例子。今天例子则是上一个小例子的升级版本。看看这个脚本的具体内容:create_x.sh我们可以看到今天的这个shell脚本相较之前的那个例子,变的复杂了。主要添加了一个功能:当存在同名文件时,将文件名自动更改为filename_n.sh的形式,不对同名文件进行覆盖。下面是这个脚本的运行效果:执行脚本一、参数传递用法$n(n=0:执行的文件名,n=1:第一个参数,n=2:第二个参数,....)特殊参数$#:获取传递到脚本到参数个数$*:将所有向脚本传递的参数都放在一个字符串中。输出 &$1 $2 $3 ... $n&$@:将所有向脚本传递的参数都放在单独的字符串中。输出 &$1& &$2& .... &$n&$?:显示命令的退出状态(0-255)。(这个命令在之后获取函数的返回值时会用到)二、运算在shell中是不能直接进行算术运算的。比如所 “a=1+1”,解释器会把“1+1”认为是一个字符串。而不是一个算术表达式。在shell中你需要借助其他的一些命令来进行运算。我所知道的是可以通过一下四种方式来进行算术运算:let a=1+1b=`expr 1 + 1`:这里使用的是反引号。在Shell中“$()”的作用和反引号是一样的,如果你不太习惯使用反引号,使用“$()”的效果也是一样的。还有一点要注意:数字和运算符之间要使用空格分开。c=$((1+1))let &d=1+1&结合参数传递和运算的小例子:计算前n项和在shell中:算术运算符有以下几种:+、-、*、/、%、=比较运算符有以下几种:(以下表达式中方括号内的空格是不能随意去除的)(数字)-eq:判断两个数是否相等,相等返回true,[&$a -eq 10 ]-ne:判断两个数是否相等,相等返回false。-gt:判断左边的数是否大于右边的,如果是,则返回 true。-lt:判断左边的数是否小于右边的,如果是,则返回 true。-ge:判断左边的数是否大于等于右边的,如果是,则返回 true。-le:判断左边的数是否小于等于右边的,如果是,则返回 true。(字符串)&:判断左边的字符串是否大于右边的,如果是,则返回 true,[[ $a & $b ]]&:判断左边的字符串是否小于右边的,如果是,则返回&true,[[&$a &&$b ]]=:判断两个字符串是否相等,相等返回true,[ $a =&$b ]!=:判断两个字符串是否相等,相等返回false,[&$a !=&$b ]-z:判断字符长度是否为0,为0返回true,[ -z $a&]-n:判断字符长度是否为0,为0返回false,[ -n&$a&]逻辑运算符有以下几种:!、&&(-a)、||(-o)[[ $a&-eq 10 || $a&-eq 20 ]]&和&[ $a&-eq 10 -o&$a&-eq 20&]&是等价的。在使用&&&&或&||&时需要使用两层中括号。小贴士:如果是对数字进行比较则还可以使用下面这种方式:比较使用“((..))”时,不需要进行转义,或是保留空格。三、控制语句if判断语句if condition1&then&&&&&command1&elif&condition2&then&&&&&command2&else&&&&&commandN&fiif-else判断条件是放在中括号“[]”里面的。?注意:在中括号中的那些空格(见上方代码)一定要保留,如果有空格缺失,shell脚本是无法正常运行的。for循环语句for var in item1 item2 ... itemN&do&&&&&command1&&&&&command2&&&&&...&&&&&commandN&donefor执行结果while循环语句while condition&do&&&&&command&donewhileuntil循环语句until condition&do&&&&&command&doneuntiluntil是当判断条件为真时退出循环;while则是当判断条件为假时退出循环。四、函数函数有两种定义方式:function fun_name(){}fun_name(){}这两种写法对函数的功能没啥影响。就是用上面一种写法在vim中有语法高亮。。functionshell中的函数和我们平常使用的编程语言中的函数十分的不同,主要体现在以下几个方面:获取参数:在shell中函数的形参没有写在函数名旁的括号中。shell函数通过和设shell脚本一样的方式获取参数(参照:一、参数传递)。返回值:shell函数默认返回的是标准输出的值(其实,完全可以把函数看作是一个微型的命令)。要想获取函数的return返回值,则可以使用“&$?&”(获取最后一条命令的退出转状态,即return的值)。&返回值看看函数默认返回了啥:输出传参:函数的传参方式和使用那些命令的传参方式一样,自需将参数紧跟在函数名的后面,并用空格分开:fun_name arg1 arg2 ...结语:今天的内容有点多哈,大家可以好好的消化消化。这些内容主要是凭借咱的记忆和之前做的一些笔记写的。如果有什么疏漏的地方,大家可以在评论里提一提。明天休息一天,后天会想大家介绍以下Linux的文件系统。(喜欢就点拨赞和关注呗!!,嘻嘻。)
本文禁止转载或摘编
feintkotlinwindows下写的shell脚本在linux执行出错的解决办法
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了windows下写的shell脚本在linux执行出错的解决办法,需要的朋友可以参考下
在Windows下写了一个shell脚本,上传到Linux下执行时报错: 代码如下:[root@localhost test]# ./test.sh&& -bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory test.sh源码:&
代码如下:#!/bin/sh& echo "test shell "
由于自己对shell不太熟悉,找同事沟通了后了解了原委,主要原因是test.sh是我在windows下编辑然后上传到linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。因为在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。我们可以通过vi编辑器来查看文件的format格式。步骤如下:1.首先用vi命令打开文件[root@localhost test]# vi test.sh&& 2.在vi命令模式中使用 :set ff 命令可以看到改文件的格式为 代码如下:fileformat=dos3.修改文件format为unix使用vi/vim修改文件format命令::set ff=unix或者::set fileformat=unix
然后:wq保存退出就可以了
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具window平台下,写好shell脚本文件,迁移到linux平台,赋过可执行权限,执行该sh文件
我的图书馆
window平台下,写好shell脚本文件,迁移到linux平台,赋过可执行权限,执行该sh文件
,却提示No ch
or directory。 了下,确实有该文件,怎么会事呢,
难道是文件格式兼容性问题?用vim打开该sh文件,输入:
: ff回车,显示filefoat=dos,重新设置下文件格式:
:set ff=unix& 保存退出:
:wq& & 再执行,竟然可以了。这个事情又给我提了次醒,程序尽量在linux下编写,迁移时,也许会少很多问题。
vim的用法,可以参阅以前的blog:vim 常用
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢}

我要回帖

更多关于 linux shell脚本编写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信