Shell输入详解
Shell是一种脚本语言,通常用于自动化执行任务和处理文件。对于一个开发者来说,熟练掌握Shell输入是非常必要的。在本篇文章中,我们将从多个方面探讨Shell输入的相关内容。
一、Shell输入回车默认值
当我们在Shell中输入注册用户的性别时,我们希望只允许输入“男”或“女”,如果用户输入其他值,那么程序会要求用户重新输入。在这种情况下,我们可以设置默认值,让用户输入回车,则会使用默认值。下面是示例代码:
read -p "请输入你的性别(默认为男):" sex
sex=${sex:-男}
echo "你的性别是$sex"
上述代码中,使用了read
命令向用户请求输入,并使用了-p
选项指定了提示信息。如果用户输入回车,则使用默认值“男”;否则,使用用户输入的值。运行以上代码,示例如下:
请输入你的性别(默认为男):
你的性别是男
二、Shell判断输入
在Shell中,我们经常需要判断用户输入是否符合我们的要求。在下面的示例中,我们用到了if
语句对用户输入的值进行判断。
read -p "请输入你的年龄:" age
if [ $age -le 18 ];then
echo "你还未成年"
else
echo "你已成年"
fi
在上述代码中,我们使用了read
命令向用户请求输入,然后使用if
语句判断用户输入的年龄是否小于等于18。如果是,则输出“你还未成年”,否则输出“你已成年”。示例输出如下:
请输入你的年龄:20
你已成年
三、Shell输入命令
在Shell中,我们可以使用read
命令获取用户输入的命令,并使用eval
命令来执行该命令。下面是示例代码:
read -p "请输入一个命令:" cmd
eval $cmd
在上述代码中,我们使用了read
命令请求用户输入命令,并使用eval
命令来执行该命令。示例输出如下:
请输入一个命令:ls -l
总用量 24
drwxr-xr-x 1 root root 12288 7月 30 07:24 bin
drwxr-xr-x 3 root root 4096 8月 7 07:37 lib
drwxr-xr-x 2 root root 4096 7月 30 07:24 sbin
drwxr-xr-x 2 root root 4096 7月 30 07:24 src
四、Shell输入一组数据求最大值
在Shell中,我们可以使用循环语句和判断语句来求一组数据的最大值。下面是示例代码:
read -p "请输入数据(以空格分隔):" data
max=0
for i in $data
do
if [ $i -gt $max ];then
max=$i
fi
done
echo "数据中的最大值为:$max"
在上述代码中,我们使用了read
命令请求用户输入一组数据,并使用循环语句和判断语句来求得这组数据的最大值。示例输出如下:
请输入数据(以空格分隔):5 9 3 7 2
数据中的最大值为:9
五、Shell输入参数
在Shell中,我们可以使用$0
、$1
、$2
等变量获取脚本或函数的参数。下面是示例代码:
#!/bin/bash
echo "脚本名称:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
在上述代码中,我们使用了$0
、$1
、$2
等变量来获取脚本或函数的参数,并使用echo
命令输出这些变量的值。示例输出如下:
$ ./test.sh arg1 arg2
脚本名称:./test.sh
第一个参数:arg1
第二个参数:arg2
六、Shell输入名字年份
在Shell中,我们可以使用read
命令请求用户输入名字和年份,并使用echo
命令输出拼接后的字符串。下面是示例代码:
read -p "请输入你的名字:" name
read -p "请输入你的出生年份:" year
age=`expr $(date +%Y) - $year`
echo "你好,$name,你今年${age}岁了"
在上述代码中,我们使用了read
命令请求用户输入名字和年份,并使用expr
命令计算出用户的年龄,并使用echo
命令输出拼接后的字符串。示例输出如下:
请输入你的名字:张三
请输入你的出生年份:1990
你好,张三,你今年31岁了
七、Shell输入一个数字
在Shell中,我们可以使用read
命令请求用户输入一个数字,并使用正则表达式判断用户输入是否为数字。下面是示例代码:
while true
do
read -p "请输入一个数字:" num
if [[ $num =~ ^[0-9]+$ ]]; then
echo "$num 是一个数字"
break
else
echo "输入有误,请重新输入"
fi
done
在上述代码中,我们使用了while
循环语句,在循环体内使用read
命令请求用户输入数字。然后使用正则表达式判断用户的输入是否为数字。如果输入正确,则输出“xxxx是一个数字”,否则提示用户输入有误。示例输出如下:
请输入一个数字:abc
输入有误,请重新输入
请输入一个数字:123
123 是一个数字
八、Shell输入密码不显示
在Shell中,我们可以使用read
命令请求用户输入密码,并使用密码模式隐藏用户的输入。下面是示例代码:
#!/bin/bash
echo -n "请输入密码:"
read -s password
echo
echo "你输入的密码是:$password"
在上述代码中,我们使用了-s
选项让read
命令进入密码模式,并使用echo
命令输出用户的密码。在输出之前,我们使用了-n
选项使echo
命令不换行。示例输出如下:
请输入密码:(用户输入密码,但不可见)
你输入的密码是:(用户输入的密码)
九、Shell输入密码
在Shell中,我们可以使用read
命令请求用户输入密码,并使用stty
命令设置终端显示模式。下面是示例代码:
#!/bin/bash
echo -n "请输入密码:"
stty -echo
read password
stty echo
echo
echo "你输入的密码是:$password"
在上述代码中,我们使用了stty
命令来设置终端的显示模式。在读取用户输入密码之前,我们使用了-echo
选项来关闭终端输出,这样用户输入的密码就不会被显示出来。在读取完用户输入的密码后,我们使用了echo
命令输出。示例输出如下:
请输入密码:(用户输入密码,但不可见)
你输入的密码是:(用户输入的密码)