加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell 学习

发布时间:2020-12-15 17:08:59 所属栏目:安全 来源:网络整理
导读:新手写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

新手写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, 2??debug 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读