免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7629 | 回复: 7
打印 上一主题 下一主题

[文本处理] shell 自动输入y参数和0参数来连续执行脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-26 14:03 |只看该作者 |倒序浏览
本帖最后由 674949301 于 2015-12-26 21:52 编辑

该脚本:
#!/bin/sh

ask_yes_or_no() {
            read -p "$1 ([y]es or [n]o): "
            case $(echo $REPLY | tr '[A-Z]' '[a-z]') in
                y|yes) echo "yes" ;;
                *)  echo "no" ;;
            esac
}

if [ "yes" == $(ask_yes_or_no "I WANT") ]; then
        echo "I WANT"
else
        echo "NO"
fi

echo -e $INFO $BOLD "Choose Your Value As Below: $NORM\n\
$BOLD##0##: $NORM Input My Own Value\n\
$BOLD##1##: $NORM Value_0\n\
$BOLD##1##: $NORM Value_1\n\
Your Choice(Direct enter 0 is Restore Default):"
read value
if [ $value = "0" ];
then
        echo -e "$BOLD Restore Default..." $NORM
elif [ $value = "1" ];
then
        echo -e "$BOLD Set Value_1..." $NORM
fi

我想执行的流程是: no >> 0
最后执行的结果是输出: Restore Default...

请各位帮忙看看!执行脚本多个选项的命令该怎么写!!

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
2 [报告]
发表于 2015-12-26 15:31 |只看该作者
没看明白你什么意思,
  1. [yjh@localhost ~]$ sh kkk.sh
  2. I WANT ([y]es or [n]o): no
  3. NO
  4. Choose Your Value As Below:
  5. ##0##:  Input My Own Value
  6. ##1##:  Value_0
  7. ##1##:  Value_1
  8. Your Choice(Direct enter 0 is Restore Default):
  9. 0
  10. [yjh@localhost ~]$ cat kkk.sh
  11. #!/bin/sh

  12. ask_yes_or_no() {
  13.             read -p "$1 ([y]es or [n]o): "
  14.             case $(echo $REPLY | tr '[A-Z]' '[a-z]') in
  15.                 y|yes) echo "yes" ;;
  16.                 *)  echo "no" ;;
  17.             esac
  18. }

  19. if [ "yes" == $(ask_yes_or_no "I WANT") ]; then
  20.         echo "I WANT"
  21. else
  22.         echo "NO"
  23. fi

  24. echo -e $INFO $BOLD "Choose Your Value As Below: $NORM\n\
  25. $BOLD##0##: $NORM Input My Own Value\n\
  26. $BOLD##1##: $NORM Value_0\n\
  27. $BOLD##1##: $NORM Value_1\n\
  28. Your Choice(Direct enter 0 is Restore Default):"
  29. read Value
  30. if [ "$value" = "0" ]; then
  31.         echo -e "$BOLD Restore Default..." $NORM
  32. elif [ "$value" = "1" ]; then
  33.         echo -e "$BOLD Set Value_1..." $NORM
  34. fi
复制代码

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
3 [报告]
发表于 2015-12-26 15:36 |只看该作者
你脚本里

read Value  #<<<--- 大写V
后面判断却是 if  [  $value = 0 ];     #<<<--- 小写v

论坛徽章:
0
4 [报告]
发表于 2015-12-26 18:57 |只看该作者
写错了!都是小写!想用一个命令来自动执行该脚本判断选项,并输出!
回复 3# yjh777


   

论坛徽章:
0
5 [报告]
发表于 2015-12-26 20:59 |只看该作者
顶一顶!!!!!

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
6 [报告]
发表于 2015-12-28 17:26 |只看该作者
本帖最后由 seanking1987 于 2015-12-28 17:27 编辑

来来回回看了好几遍才明白LZ的意思。

LZ的意思是想要直接sh test.sh ......一句话执行脚本的方式执行出下面的效果。。
  1. $ sh test.sh
  2. I WANT ([y]es or [n]o): n
  3. NO
  4. Choose Your Value As Below:
  5. ##0##:  Input My Own Value
  6. ##1##:  Value_0
  7. ##1##:  Value_1
  8. Your Choice(Direct enter 0 is Restore Default):
  9. 0
  10. Restore Default...
复制代码
等高人吧,不改脚本的情况下不知道怎么实现

论坛徽章:
0
7 [报告]
发表于 2015-12-31 21:54 |只看该作者
回复 4# 674949301
是指这样?
  1. printf "y\n0"|./your.sh
  2. printf "n\n1"|./your.sh
  3. printf "y\n1"|./your.sh
  4. printf "n\n0"|./your.sh
复制代码
脚本选项的话, 可以参考下这个, man下sh查下getopts用法
  1. #!/bin/sh
  2. if [ $# -eq 0 ];then
  3.     printf "Usage ...\n"
  4.     exit 1
  5. fi

  6. while getopts "hg:f:" opt
  7. do
  8.     case $opt in
  9.         "f")
  10.             printf "option f:%s\n" $OPTARG
  11.             continue
  12.             ;;
  13.         "g")
  14.             printf "option g:%s\n" $OPTARG
  15.             continue
  16.             ;;
  17.         "h"|*)
  18.             printf "Usage ...\n"
  19.             continue
  20.             ;;
  21.     esac
  22. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2016-01-02 12:18 |只看该作者
谢谢了!解决了我的大问题!回复 7# runintostar


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP