本人小菜一个,最近在看shell脚本, 准备照猫画虎自己写个查询添加的小脚本,想实现的功能是:输入一个字符串然后查找passwd是否有这个字符串,如果有输出字符串,如果没有则把这段字符串添加到passwd。我想用if来判断用户输入的字段是否在passwd存在,但是实在想不出来如何实现。 如果不用if只是判断用户输入的字段是否存在,应该可以这样实现:
read -p "please input :" b
cat passwd | grep -n "$b" || echo "thiere is no "$b" in this file!"
但是如果想加入if判断语句是要把这些都写在[]里面么?还是有什么更简单的方法可达成?请高手指点一下小弟。
请大家帮助一下
- wjchen
- 帖子: 583
- 注册时间: 2011-05-02 19:08
- 系统: ubuntu 12.04
Re: 请大家帮助一下
#!/bin/bash
read -p "please input :" b
num=`cat passwd | grep -c "$b"`
if [ $num -gt 0 ]; then
echo $b
else
echo $b >> passwd
fi
read -p "please input :" b
num=`cat passwd | grep -c "$b"`
if [ $num -gt 0 ]; then
echo $b
else
echo $b >> passwd
fi
-
- 帖子: 7
- 注册时间: 2008-04-10 15:25
Re: 请大家帮助一下
感谢LS的筒子,我怎么没想到呢!还要努力啊! 

-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
Re: 请大家帮助一下
为啥用if就要用[
代码: 全选
read -p "please input :" user
if grep -q "$user" passwd ; then
echo "$user"
else
echo "$user" >> passwd
fi
代码: 全选
] ls -ld //
-
- 帖子: 7
- 注册时间: 2008-04-10 15:25
Re: 请大家帮助一下
tusooa 写了:为啥用if就要用[代码: 全选
read -p "please input :" user if grep -q "$user" passwd ; then echo "$user" else echo "$user" >> passwd fi
呵呵,可能太‘教科书‘了吧

- 我就是我2
- 帖子: 1215
- 注册时间: 2008-12-13 10:55
- 来自: the Earth
- 联系:
Re: 请大家帮助一下
使用[] 比较能够偷懒吧.一律使用[]gwssgc 写了:tusooa 写了:为啥用if就要用[代码: 全选
read -p "please input :" user if grep -q "$user" passwd ; then echo "$user" else echo "$user" >> passwd fi
呵呵,可能太‘教科书‘了吧
当然,这跟引用变量时的双引号是类似的, 使用 "$i" 能够处理变量中空格
对比下面两行代码
代码: 全选
i=1;if $i -gt 0 ;then echo i;else echo j;fi
i=1;if [ $i -gt 0 ];then echo i;else echo j;fi
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!