sh/bash/dash/ksh/zsh等Shell脚本
-
fengmanloude
- 帖子: 95
- 注册时间: 2011-05-21 19:35
#1
帖子
由 fengmanloude » 2012-04-07 16:57
下面是两个例子 我想问怎样才能在我的ubuntu上运行成功啊?
我刚装完vim,以下是我上课时的两个例子,弄不出来~
]练习 1.1:
[]$ dir=/usr/mengqc/file1
$ echo $ dir
/usr/mengqc/file1
$ echo dir
dir
$ today=Sunday
$ echo $ today $ Today
Sunday
$ str="Hapy New Year ! "
$ echo "Wish You $str"
Wish You Happy New Year !
我想$ dir=/usr/mengqc/file1 把"=" 后改成我自己的用户名就可以了吧? 可是我的usr目录下没有我用户名(think)相关文件,怎么弄?
练习 1.2:
$ read name -----输入 read 命令
mengqc -----输入 name 的值
$ echo "Your Name is $ name."
Your Name is mengqc -----显示输出的结果
$ read a b c -----read 命令有三个参数
crtvu cn edu -----输入三个字符串,中间以空格隔开
$ echo "Email : $a. $c. $b"
Email : crtvu.edu.cn -----显示输出结果
----------后面的汉字是注释还是需要输入内容啊?求解~
我试过------后面不输入 和输参数 运行都显示有错误啊~
最后问一句shell 命令开头是不是都必须加#!/bin/sh或相关指令啊? 例题中是没有加 还是可以省略不加啊?

-
cuihao
- 帖子: 4793
- 注册时间: 2008-07-24 11:33
- 来自: 郑州
-
联系:
#2
帖子
由 cuihao » 2012-04-07 17:14
1. 话说LZ明白那些命令的意义么?
usr下面本来就没有什么用户的文件夹。那些例子都是字符串操作,和文件没啥关系。就像:
代码: 全选
echo "exec C:/a.exe"
只是显示了一段字符串,并不需要我的Linux有个什么C盘。
至于书上为什么给这样的例子,只能问编书的人了。
2. 注释,至少我觉得是。
3. 关于“#!/bin/sh”,如果是脚本文件的话,最好在第一行加上,有用的。
自己在终端输入就不需要了。
至于你的错误,贴出来看看吧。
-
fengmanloude
- 帖子: 95
- 注册时间: 2011-05-21 19:35
#3
帖子
由 fengmanloude » 2012-04-07 17:28
cuihao 写了:1. 话说LZ明白那些命令的意义么?
usr下面本来就没有什么用户的文件夹。那些例子都是字符串操作,和文件没啥关系。就像:
代码: 全选
echo "exec C:/a.exe"
只是显示了一段字符串,并不需要我的Linux有个什么C盘。
至于书上为什么给这样的例子,只能问编书的人了。
2. 注释,至少我觉得是。
3. 关于“#!/bin/sh”,如果是脚本文件的话,最好在第一行加上,有用的。
自己在终端输入就不需要了。
至于你的错误,贴出来看看吧。
那些命令确实不懂啊 周四才开始学得shell呢~
错误我截了两个图 贴出来吧 第一个vi编辑的 第二个是错误信息
-
附件
-

- 错误提示
-

- vi
-
cuihao
- 帖子: 4793
- 注册时间: 2008-07-24 11:33
- 来自: 郑州
-
联系:
#4
帖子
由 cuihao » 2012-04-07 17:34
1. 行首那些美元符号“$”,不要输入。
2. 变量名前的“$”,后面不要加空格。
3. 我看不清楚,你的“$”是全角的么?写代码不要开中文输入法。
4. 额…… 程序输出的内容是不需要自己输入的。书上只是为了让你看效果印上去了。
-
fengmanloude
- 帖子: 95
- 注册时间: 2011-05-21 19:35
#5
帖子
由 fengmanloude » 2012-04-07 17:58
cuihao 写了:1. 行首那些美元符号“$”,不要输入。
2. 变量名前的“$”,后面不要加空格。
3. 我看不清楚,你的“$”是全角的么?写代码不要开中文输入法。
4. 额…… 程序输出的内容是不需要自己输入的。书上只是为了让你看效果印上去了。
先谢谢你的帮助了~
程序我是pdf电子讲义上复制的 去掉$符号还是有错误啊
这个实验的内容就是学习$符号的使用啊 另外就是我们上课讲的是redhat 会不会跟编译器什么的有关啊?
要求如下:[/size]
(1) Shell变量
Shell 有两种变量:环境变量和临时变量。在 Shell 脚本中临时变量又分为两类:用户定
义的变量和位置参数。
用户定义的变量
用户定义的变量是最普遍的 Shell 变量,变量名是以字母或下化线打头的字母、数字和
下线符序列,并且大小写字母意义不同。变量名的长度不受限制。定义变量并赋值的一般形
式是: 变量名=字符串 例如,
MYFILE=/usr/meng/ff/m1.c
a. 定义并显示变量的值
在程序中使用变量的值时,要在变量名前面加上一个符号“$”
。这个符号告诉 Shell,
要读取该变量的值。
然后后面就是这个例题
-
附件
-

-

-
枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
-
联系:
#6
帖子
由 枫叶饭团 » 2012-04-07 17:58
最近发现程序自带手册比书给力多了。man bash
-
fengmanloude
- 帖子: 95
- 注册时间: 2011-05-21 19:35
#7
帖子
由 fengmanloude » 2012-04-07 18:00
枫叶饭团 写了:最近发现程序自带手册比书给力多了。man bash
恩 耐下心来看man手册也是个不错的选择 只是纯英文的 找自己需要的东西还是挺费劲的 很多专业词汇也不认识啊
-
cuihao
- 帖子: 4793
- 注册时间: 2008-07-24 11:33
- 来自: 郑州
-
联系:
#8
帖子
由 cuihao » 2012-04-07 18:10
好吧……
$ echo $dir
书上这么印的意思是:“请在终端输入 ‘echo $dir’ ”
/usr/mengqc/file1
书上这么印的意思是:“如果一切顺利,终端会显示 ‘/usr/mengqc/file1’ ”
带$的那一句是,你要输入的,是脚本的“代码”。
不带$的那一句,你不用输入,是预期的“输出”。
就像我说: LZ请帮我买一斤羊肉,我要吃火锅。
LZ要做的是:买羊肉。
LZ不能做的是:擅自吃掉羊肉。
-
lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#9
帖子
由 lilydjwg » 2012-04-07 18:27
fengmanloude 写了:
先谢谢你的帮助了~
程序我是pdf电子讲义上复制的 去掉$符号还是有错误啊
这个实验的内容就是学习$符号的使用啊 另外就是我们上课讲的是redhat 会不会跟编译器什么的有关啊?
要求如下:
1. 如果你是认真看了教材的话,那么你应当换教材;
2. 上课的话,软件的版本会很古老,有不少细节差异,不过基本的东西还是一样的,就像文言文和白话文虽然用法啊词意啊相差不少,但毕竟还是有很多地方相同不是;
3. 贴代码请点下工具栏的
Code。不要总是把字弄很大。如果我们中的哪位视力不好,他会知道按 Ctrl++ 来放大文字的。
-
fengmanloude
- 帖子: 95
- 注册时间: 2011-05-21 19:35
#10
帖子
由 fengmanloude » 2012-04-07 18:28
cuihao 写了:好吧……
$ echo $dir
书上这么印的意思是:“请在终端输入 ‘echo $dir’ ”
/usr/mengqc/file1
书上这么印的意思是:“如果一切顺利,终端会显示 ‘/usr/mengqc/file1’ ”
带$的那一句是,你要输入的,是脚本的“代码”。
不带$的那一句,你不用输入,是预期的“输出”。
就像我说: LZ请帮我买一斤羊肉,我要吃火锅。
LZ要做的是:买羊肉。
LZ不能做的是:擅自吃掉羊肉。
谢谢~ 已经解决了……
$ echo $dir[/b]
书上这么印的意思是:“请在终端输入 ‘echo $dir’ ”
usr/mengqc/file1[/b]
书上这么印的意思是:“如果一切顺利,终端会显示 ‘/usr/mengqc/file1’ ”
这两个地方开始没有理解 以为是照原样输入的~
另外谢谢你的耐心~
