脚本编程大全 第十四章 处理用户输入

参数数量
#!/bin/bash

echo "$#"   #参数数量


echo "${$#}"  # 输出打印了当前的进程ID?

echo "${!#}"  #打印最后一个参数 

ps

获取所有参数

#!/bin/bash

echo "两者都是获取所有数据"
echo "Using the \$* method:$*"

echo "Using the \$@ method:$@"
echo "区别"
for par in "$*"
do
	echo -n "\$*:$par  "
done
echo ""
for par in "$@"
do
	echo -n "\$@:$par  "
done
echo ""

输出(均添加双引号):
两者都是获取所有数据
Using the $* method:aa bb dd ee
Using the $@ method:aa bb dd ee
区别
$:aa bb dd ee
$@:aa $@:bb $@:dd $@:ee
输出(均不添加双引号)
两者都是获取所有数据
Using the $
method:aa bb dd ee
Using the $@ method:aa bb dd ee
区别
$:aa $:bb $:dd $:ee
$@:aa $@:bb $@:dd $@:ee

移动变量 shift
#!/bin/bash

count=1;

while [ -n "$1 " ]  #test -n the length of the str is not zero 
	#若$1没有双引号   或是引号内存在空格 则会死循环 
do
	echo "Parameter:$count: $1"
	shift
	count=$[$count+1]
done

shift移除参数后无法恢复
shitf -n 指定移除的数目

命令选项
#!/bin/bash
while [ -n "$1" ]   #同样的错误! $1双引号 
do
case $1 in
-a )
	echo " You choose -a opt!"  ;;
-b )
	echo "You choose  -b opt!"   ;;
-c ) 
	echo "You choose  -c  opt!"  ;;
* )
	echo "invalid opt!" ;;
esac 
shift #shift移除判断过的变量 控制循环结束 
done

getopt选项处理
获取用户输入

#!/bin/bash
# -p 添加提示符     多变量的分配

read -p "enter your name:"  name1 name2 name3
echo "1name=${name1} 2name=${name2}  3name=${name3} "

#!/bin/bash

read -t 3  -p "input you str:"
echo "$REPLY"


read 命令的退出码 超时设置
#!/bin/bash

if read -t 3 -p "please input your input:" name 
then 
	echo "you had input your name : $name!"
else
	echo -e "\n你的退出码为:$?" 
	echo  -e "\nWhat's  your fucking name ?"
fi

read -s (输入不显示,其实是将输入字符颜色设置为与背景一致) -na (输入a个字符后自动结束输入)

#!/bin/bash

read -s -n1 -p  "Do you want to continue:" cas
echo ""

case $cas in
 Y | y ) 
		echo "You choose to continue!";;
N | n )
		echo "You choose to break!";;
* )
	echo "What's the fucking input!";;
esac 

从文件中读取

cat 从文本输出数据时,会输出空行 while同样会处理空行
但是 for 不会

#!/bin/bash
count=1 
file=$1

cat $file | while read "line" 
do
	echo "$count:: $line"
	count=$[$count+1]
done





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值