当前位置: 技术问答>linux和unix
初学shell,请帮忙看下
来源: 互联网 发布时间:2017-01-06
本文导语: #! /bin/sh line= |grep $1 /etc/passwd echo $line if [ $line!="" ] //这一行应该怎么处理,它总是跑到 exist的分支,例子上用的是 if [ -z line ],也有问题 then echo "line = $line" echo "user $1 exists." else echo "user $1 not e...
#! /bin/sh
line= |grep $1 /etc/passwd
echo $line
if [ $line!="" ] //这一行应该怎么处理,它总是跑到 exist的分支,例子上用的是 if [ -z line ],也有问题
then
echo "line = $line"
echo "user $1 exists."
else
echo "user $1 not exists."
fi
line= |grep $1 /etc/passwd
echo $line
if [ $line!="" ] //这一行应该怎么处理,它总是跑到 exist的分支,例子上用的是 if [ -z line ],也有问题
then
echo "line = $line"
echo "user $1 exists."
else
echo "user $1 not exists."
fi
|
试试看这个吧,我测试得可行的。
#!/bin/bash
# chk_user.sh
# Check use whether exists.
# Usage: chk_user.sh
#定义全局返回码
EXIT_SUCCESS=0
EXIT_FAILURE=1
E_BADARG=2
# 一般一进来就进行参数检测
if [ $# -ne 1 ]; then
echo "Usage: chk_user.sh "
# 确保正确返回0,错误返回非0!
exit $E_BADARG
fi
# 将你传入的参数用变量来“装”,不要整个脚本都是$1、$2等等
usr2chk="$1"
#变量赋值两边都要加空格!
line=$(cat /etc/passwd | grep "$usr2chk")
#引用变量的值时最好加上双引号,尤其是在进行条件判断的时候
#例如,这里若line为空,而没有加双引号,那就会报语法错误了。
if [ -z "$line" ]; then
echo "User $usr2chk doesn't exist."
exit $EXIT_FAILURE
else
echo "User $usr2chk exists."
fi
exit $EXIT_SUCCESS
|
这个逻辑不对。
if [ ! -z $line ]
|
在我的机器上面测试正常。
sh -x str.sh
调试看看。
sh -x str.sh
调试看看。