shell 学习

新手写shell 积累ing
问题1:
shell 脚本中的变量都是字符 比较的时候 有 test 和 【】 记得空格

这里报错:

read -p "please input Y/N:  " yn
if [ $yn == "Y" ]||[ $yn == "y" ] ; then
        echo "input yes"


elif [ $yn == "n" ]||[ $yn =="N" ];  then
        echo "input No"


else
        echo "input error"
fi

执行结果报错:
line 13: [: N: unary operator expected 使用网上查找的 再加一个中括号的方式也没有解决 [[ ]]
用 sh -x test.sh 将每一步用到的shell命令打印出来 然后执行结果
sh [-nvx]
-n 检查sh 有没有语法错误 -v 将程序先打印出来 (view) -x 将执行的程序都打印出来
最后定为在 == 的两侧 不能与变量直接接触 要有空格
在 命令模式 set nu 可以显示行号 怎么让所有的。sh 都显示行号呢 这个应该去修改配置文件
要显示变量的名字 用 echo “$var” 要 显示 “”怎办?? 转义 \” 可以打印 “ 写到这里忽然想起来了帧格式的转义 就是用两个字节 代表一个字节

问题 2:

read -p "please input: "  h
if [[ "$1" == "hello" ]]; then
        echo "hello,nice to meet you"
#elif [ $1 == " " ];then
#       echo "you must input parameter!!"
else
        echo "the input is:  " " $h"
fi

一直没有得到正确的结果 在 -x 调试的时候发现 1 # 代表参数的个数 0shell 1 代表第一个参数 。。。。$1-9 一共可以有九个参数**
在调用的时候 是这样完成的

ash$ ./hello.sh build test
  1. 脚本中 0./hello.sh 1的值是build,$2的值是test。
bash$ list.sh -sh --debug /home/user
  1. 脚本中 0list.sh 1的值是-sh, 2debug 3的值是/home/user。

当脚本接受命令行参数时,美元符加数字就可以引用这些参数。

1 var 我觉得最好还是加上 “” 不知道不加会有什么错误 回头查一下

创建、删除的命令
mkdir (make directiories)
删除
rm -rf filename

问题3
怎么在echo 打印 命令的输出结果
如 echo pwd
可以将pwd 的结果赋值给变量path 再打印

path=$(pwd)#一定要有()
echo "$path" 
也可以 

echo“ `pwd` ”

将命令结果赋值给变量 var=$(cmd)
如 filelist=$(ls&dir)#列出所在目录下的文件名

http://www.cnblogs.com/end/archive/2012/06/05/2536835.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值