请教关于Shell编程中位置参数的几个初级问题

Elainey 2010-04-08 11:21:00
我是刚开始用linux学习Shell编程,从书上抄了一段例子运行了一下,但是不能出来预期结果,希望大家帮我看看
有一个Shell代码如下,程序名为myname
#Name display program
If ($# -eq o)
Then
Echo "Name not provided"
Else
Echo "your name is "$1
执行.myname 结果 应该是Name not provided
执行.myname windy 结果应是your name is windy

我执行了都没有得出对应的结果,一开始说syntax error near unexpected token "$#"
后来有显示说command not found
请教一下这是怎么回事?
2.这个现象和我打开虚拟机的时候显示的cannot mount filesystem [failed]有没有关系,开虚拟机的时候有时候有时候全部正常,有时候就显示cannot mount filesystem [failed,这是什么原因呀
3.以前用windows都会把相关的文件保存在一个文件夹,在linux下编程我该如何管理我的文件不至于混乱呢
谢谢各位大侠啦
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Elainey 2010-04-11
  • 打赏
  • 举报
回复
谢谢楼上两位了,我仔细改正了总算通过了。散分啦,呵呵
tsh185 2010-04-08
  • 打赏
  • 举报
回复
shell 的第一句 应该是
#!你的shell路径比如

#!/bin/sh
goto310 2010-04-08
  • 打赏
  • 举报
回复
不知道楼主用的是哪种shell,我在bash下帮楼主改了下,以下是运行成功的代码
#Name display program
if [ $# -eq 0 ]
then
echo "Name not provided"
else
echo "your name is "$1
fi
楼主的代码存在以下问题:
1.大小写问题。linux下是区分大小写的,lz的几个关键字首个字母应该用小写。
2.括号前后没有空格。if后面的括号与括号内的语句要用空格隔开。
3.-eq后面是数字0,而lz写的是字母o。
4.if语句没有结尾,在bash下结尾是fi。
5.运行时文件名写得不对,.myname和./myname意义是完全不同的,所以会显示command not found。
改正以上问题后,lz就应该能得到想要的结果。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧